Looks probably like a bug in GCC and best discussed in their forum? (clang
seems to produce the macro in the macinfo if you compile with
`-fdebug-macro` (& you have to put some emitted entity (like a function
definition) in the file before Clang will produce any debug info for the
file))

On Wed, Sep 11, 2024 at 11:51 AM Lorenzo Gomez via Dwarf-discuss <
dwarf-discuss@lists.dwarfstd.org> wrote:

> Something else to note:
>
> If I link the "test_file1.o" file with "gcc  -g3  -nostartfiles -Llib
> -gdwarf-4  test_file1_copy.o -o test_file1_linked_dwarf4.o" the macro shows
> up in the DWARF, regardless of whether it is defined before/after the
> #include.
>
>
> On 9/11/24 1:47 PM, Lorenzo Gomez wrote:
>
> Hi there,
>
>
> I'm currently using dwarfdump "2020-01-14 10:13:32-08:00   Package Version
> "20200114"" to look at macros inside the DWARF.
>
>
> Imagine two files; test_file1.h and test_file1.cpp
>
> test_file1.cpp is defined as follows:
>
>
> /*
>  * test_file.cpp
>  *
>  */
>
> #ifdef __cplusplus
> extern "C" {
> #endif
>
> #include "test_file1.h"
>
> #include <fcntl.h>
> #include <stdio.h>
> #include <sys/stat.h>
> #include <sys/types.h>
> #include <unistd.h>
>
> Square                                         sq              = {};
> Circle                                         ci              = {};
> #ifdef __cplusplus
> }
> #endif
>
>
>
>
>
> Here are two scenarios for the definition of test_file1.h.
>
>
> Scenario #1
>
>   test_file.h is defined as follows:
>
> #include "stdint.h"
>
> #define CFE_MISSION_ES_PERF_MAX_IDS 128
>
>
>
> typedef struct CFE_ES_HousekeepingTlm_Payload
> {
>     uint32_t PerfFilterMask[CFE_MISSION_ES_PERF_MAX_IDS / 32];  /**<
> \cfetlmmnemonic \ES_PERFFLTRMASK
>                                                            \brief Current
> Setting of Performance Analyzer Filter Masks */
>     uint32_t PerfTriggerMask[CFE_MISSION_ES_PERF_MAX_IDS / 32]; /**<
> \cfetlmmnemonic \ES_PERFTRIGMASK
>                                                              \brief
> Current Setting of Performance Analyzer Trigger Masks */
> } CFE_ES_HousekeepingTlm_Payload_t;
>
>
>
> After compiling with "gcc  -g3 -c -gdwarf-4  test_file1.cpp -o
> test_file1_copy_dwarf4.o" and then running "dwarfdump test_file1_dwarf4.o
> > dwarf4_test_file1.txt". The Macro doe NOT show up in
> dwarf4_test_file1.txt. It does show up under the debug string table but not
> under the "debug_macro" section.
>
>
>
>
>
> Scenario #2
>
>   test_file.h is defined as follows:
>
>
>         #define CFE_MISSION_ES_PERF_MAX_IDS 128
>
> #include "stdint.h"
>
>
>
> typedef struct CFE_ES_HousekeepingTlm_Payload
> {
>     uint32_t PerfFilterMask[CFE_MISSION_ES_PERF_MAX_IDS / 32];  /**<
> \cfetlmmnemonic \ES_PERFFLTRMASK
>                                                            \brief Current
> Setting of Performance Analyzer Filter Masks */
>     uint32_t PerfTriggerMask[CFE_MISSION_ES_PERF_MAX_IDS / 32]; /**<
> \cfetlmmnemonic \ES_PERFTRIGMASK
>                                                              \brief
> Current Setting of Performance Analyzer Trigger Masks */
> } CFE_ES_HousekeepingTlm_Payload_t;
>
>
>
> After compiling with "gcc  -g3 -c -gdwarf-4  test_file1.cpp -o
> test_file1_dwarf4.o" and then running "dwarfdump test_file1_dwarf4.o
> > dwarf4_test_file1.txt". The Macro DOES show up in dwarf4_test_file1.txt.
> It does show up under the "debug_macro" section.
>
>
> Is there a reason why in order for macros to show up they have to be
> declared *before *the #include macro(s)?
>
>
> Perhaps I'm missing something obvious?
>
> Some more info about my system(x86 Intel CPU):
>
> NAME="Pop!_OS"
> VERSION="20.04 LTS"
> ID=pop
> ID_LIKE="ubuntu debian"
> PRETTY_NAME="Pop!_OS 20.04 LTS"
> VERSION_ID="20.04"
> HOME_URL="https://pop.system76.com"; <https://pop.system76.com>
> SUPPORT_URL="https://support.system76.com"; <https://support.system76.com>
> BUG_REPORT_URL="https://github.com/pop-os/pop/issues";
> <https://github.com/pop-os/pop/issues>
> PRIVACY_POLICY_URL="https://system76.com/privacy";
> <https://system76.com/privacy>
> VERSION_CODENAME=focal
> UBUNTU_CODENAME=focal
> LOGO=distributor-logo-pop-os
>
>
>
>
> Thanks
>
> Lorenzo
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> --
> Dwarf-discuss mailing list
> Dwarf-discuss@lists.dwarfstd.org
> https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss
>
-- 
Dwarf-discuss mailing list
Dwarf-discuss@lists.dwarfstd.org
https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss

Reply via email to