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"
SUPPORT_URL="https://support.system76.com"
BUG_REPORT_URL="https://github.com/pop-os/pop/issues"
PRIVACY_POLICY_URL="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