Skip to content

Commit

Permalink
[LLDB][ppc64le] Rename enums in AuxVector
Browse files Browse the repository at this point in the history
Summary:
On linux on ppc64le some of the enums in AuxVector have the same name
as macros defined in the system.

Reviewers: mikesart, labath

Reviewed By: labath

Subscribers: joerg, gut, krytarowski, lldb-commits

Differential Revision: https://reviews.llvm.org/D35065
Patch by Bruno Rosa <bruno.rosa@eldorado.org.br>

llvm-svn: 307632
  • Loading branch information
labath committed Jul 11, 2017
1 parent 0e831c9 commit cc72ede
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 74 deletions.
76 changes: 38 additions & 38 deletions lldb/source/Plugins/DynamicLoader/POSIX-DYLD/AuxVector.cpp
Expand Up @@ -63,10 +63,10 @@ void AuxVector::ParseAuxv(DataExtractor &data) {
if (!ParseAuxvEntry(data, entry, &offset, byte_size))
break;

if (entry.type == AT_NULL)
if (entry.type == AUXV_AT_NULL)
break;

if (entry.type == AT_IGNORE)
if (entry.type == AUXV_AT_IGNORE)
continue;

m_auxv.push_back(entry);
Expand Down Expand Up @@ -110,43 +110,43 @@ void AuxVector::DumpToLog(Log *log) const {
const char *AuxVector::GetEntryName(EntryType type) {
const char *name = "AT_???";

#define ENTRY_NAME(_type) \
_type: \
name = #_type
#define ENTRY_NAME(_type) \
_type: \
name = #_type + 5
switch (type) {
case ENTRY_NAME(AT_NULL); break;
case ENTRY_NAME(AT_IGNORE); break;
case ENTRY_NAME(AT_EXECFD); break;
case ENTRY_NAME(AT_PHDR); break;
case ENTRY_NAME(AT_PHENT); break;
case ENTRY_NAME(AT_PHNUM); break;
case ENTRY_NAME(AT_PAGESZ); break;
case ENTRY_NAME(AT_BASE); break;
case ENTRY_NAME(AT_FLAGS); break;
case ENTRY_NAME(AT_ENTRY); break;
case ENTRY_NAME(AT_NOTELF); break;
case ENTRY_NAME(AT_UID); break;
case ENTRY_NAME(AT_EUID); break;
case ENTRY_NAME(AT_GID); break;
case ENTRY_NAME(AT_EGID); break;
case ENTRY_NAME(AT_CLKTCK); break;
case ENTRY_NAME(AT_PLATFORM); break;
case ENTRY_NAME(AT_HWCAP); break;
case ENTRY_NAME(AT_FPUCW); break;
case ENTRY_NAME(AT_DCACHEBSIZE); break;
case ENTRY_NAME(AT_ICACHEBSIZE); break;
case ENTRY_NAME(AT_UCACHEBSIZE); break;
case ENTRY_NAME(AT_IGNOREPPC); break;
case ENTRY_NAME(AT_SECURE); break;
case ENTRY_NAME(AT_BASE_PLATFORM); break;
case ENTRY_NAME(AT_RANDOM); break;
case ENTRY_NAME(AT_EXECFN); break;
case ENTRY_NAME(AT_SYSINFO); break;
case ENTRY_NAME(AT_SYSINFO_EHDR); break;
case ENTRY_NAME(AT_L1I_CACHESHAPE); break;
case ENTRY_NAME(AT_L1D_CACHESHAPE); break;
case ENTRY_NAME(AT_L2_CACHESHAPE); break;
case ENTRY_NAME(AT_L3_CACHESHAPE); break;
case ENTRY_NAME(AUXV_AT_NULL); break;
case ENTRY_NAME(AUXV_AT_IGNORE); break;
case ENTRY_NAME(AUXV_AT_EXECFD); break;
case ENTRY_NAME(AUXV_AT_PHDR); break;
case ENTRY_NAME(AUXV_AT_PHENT); break;
case ENTRY_NAME(AUXV_AT_PHNUM); break;
case ENTRY_NAME(AUXV_AT_PAGESZ); break;
case ENTRY_NAME(AUXV_AT_BASE); break;
case ENTRY_NAME(AUXV_AT_FLAGS); break;
case ENTRY_NAME(AUXV_AT_ENTRY); break;
case ENTRY_NAME(AUXV_AT_NOTELF); break;
case ENTRY_NAME(AUXV_AT_UID); break;
case ENTRY_NAME(AUXV_AT_EUID); break;
case ENTRY_NAME(AUXV_AT_GID); break;
case ENTRY_NAME(AUXV_AT_EGID); break;
case ENTRY_NAME(AUXV_AT_CLKTCK); break;
case ENTRY_NAME(AUXV_AT_PLATFORM); break;
case ENTRY_NAME(AUXV_AT_HWCAP); break;
case ENTRY_NAME(AUXV_AT_FPUCW); break;
case ENTRY_NAME(AUXV_AT_DCACHEBSIZE); break;
case ENTRY_NAME(AUXV_AT_ICACHEBSIZE); break;
case ENTRY_NAME(AUXV_AT_UCACHEBSIZE); break;
case ENTRY_NAME(AUXV_AT_IGNOREPPC); break;
case ENTRY_NAME(AUXV_AT_SECURE); break;
case ENTRY_NAME(AUXV_AT_BASE_PLATFORM); break;
case ENTRY_NAME(AUXV_AT_RANDOM); break;
case ENTRY_NAME(AUXV_AT_EXECFN); break;
case ENTRY_NAME(AUXV_AT_SYSINFO); break;
case ENTRY_NAME(AUXV_AT_SYSINFO_EHDR); break;
case ENTRY_NAME(AUXV_AT_L1I_CACHESHAPE); break;
case ENTRY_NAME(AUXV_AT_L1D_CACHESHAPE); break;
case ENTRY_NAME(AUXV_AT_L2_CACHESHAPE); break;
case ENTRY_NAME(AUXV_AT_L3_CACHESHAPE); break;
}
#undef ENTRY_NAME

Expand Down
69 changes: 35 additions & 34 deletions lldb/source/Plugins/DynamicLoader/POSIX-DYLD/AuxVector.h
Expand Up @@ -42,41 +42,42 @@ class AuxVector {

/// Constants describing the type of entry.
/// On Linux, running "LD_SHOW_AUXV=1 ./executable" will spew AUX information.
/// Added AUXV prefix to avoid potential conflicts with system-defined macros
enum EntryType {
AT_NULL = 0, ///< End of auxv.
AT_IGNORE = 1, ///< Ignore entry.
AT_EXECFD = 2, ///< File descriptor of program.
AT_PHDR = 3, ///< Program headers.
AT_PHENT = 4, ///< Size of program header.
AT_PHNUM = 5, ///< Number of program headers.
AT_PAGESZ = 6, ///< Page size.
AT_BASE = 7, ///< Interpreter base address.
AT_FLAGS = 8, ///< Flags.
AT_ENTRY = 9, ///< Program entry point.
AT_NOTELF = 10, ///< Set if program is not an ELF.
AT_UID = 11, ///< UID.
AT_EUID = 12, ///< Effective UID.
AT_GID = 13, ///< GID.
AT_EGID = 14, ///< Effective GID.
AT_CLKTCK = 17, ///< Clock frequency (e.g. times(2)).
AT_PLATFORM = 15, ///< String identifying platform.
AT_HWCAP = 16, ///< Machine dependent hints about processor capabilities.
AT_FPUCW = 18, ///< Used FPU control word.
AT_DCACHEBSIZE = 19, ///< Data cache block size.
AT_ICACHEBSIZE = 20, ///< Instruction cache block size.
AT_UCACHEBSIZE = 21, ///< Unified cache block size.
AT_IGNOREPPC = 22, ///< Entry should be ignored.
AT_SECURE = 23, ///< Boolean, was exec setuid-like?
AT_BASE_PLATFORM = 24, ///< String identifying real platforms.
AT_RANDOM = 25, ///< Address of 16 random bytes.
AT_EXECFN = 31, ///< Filename of executable.
AT_SYSINFO = 32, ///< Pointer to the global system page used for system
///calls and other nice things.
AT_SYSINFO_EHDR = 33,
AT_L1I_CACHESHAPE = 34, ///< Shapes of the caches.
AT_L1D_CACHESHAPE = 35,
AT_L2_CACHESHAPE = 36,
AT_L3_CACHESHAPE = 37,
AUXV_AT_NULL = 0, ///< End of auxv.
AUXV_AT_IGNORE = 1, ///< Ignore entry.
AUXV_AT_EXECFD = 2, ///< File descriptor of program.
AUXV_AT_PHDR = 3, ///< Program headers.
AUXV_AT_PHENT = 4, ///< Size of program header.
AUXV_AT_PHNUM = 5, ///< Number of program headers.
AUXV_AT_PAGESZ = 6, ///< Page size.
AUXV_AT_BASE = 7, ///< Interpreter base address.
AUXV_AT_FLAGS = 8, ///< Flags.
AUXV_AT_ENTRY = 9, ///< Program entry point.
AUXV_AT_NOTELF = 10, ///< Set if program is not an ELF.
AUXV_AT_UID = 11, ///< UID.
AUXV_AT_EUID = 12, ///< Effective UID.
AUXV_AT_GID = 13, ///< GID.
AUXV_AT_EGID = 14, ///< Effective GID.
AUXV_AT_CLKTCK = 17, ///< Clock frequency (e.g. times(2)).
AUXV_AT_PLATFORM = 15, ///< String identifying platform.
AUXV_AT_HWCAP = 16, ///< Machine dependent hints about processor capabilities.
AUXV_AT_FPUCW = 18, ///< Used FPU control word.
AUXV_AT_DCACHEBSIZE = 19, ///< Data cache block size.
AUXV_AT_ICACHEBSIZE = 20, ///< Instruction cache block size.
AUXV_AT_UCACHEBSIZE = 21, ///< Unified cache block size.
AUXV_AT_IGNOREPPC = 22, ///< Entry should be ignored.
AUXV_AT_SECURE = 23, ///< Boolean, was exec setuid-like?
AUXV_AT_BASE_PLATFORM = 24, ///< String identifying real platforms.
AUXV_AT_RANDOM = 25, ///< Address of 16 random bytes.
AUXV_AT_EXECFN = 31, ///< Filename of executable.
AUXV_AT_SYSINFO = 32, ///< Pointer to the global system page used for system
///calls and other nice things.
AUXV_AT_SYSINFO_EHDR = 33,
AUXV_AT_L1I_CACHESHAPE = 34, ///< Shapes of the caches.
AUXV_AT_L1D_CACHESHAPE = 35,
AUXV_AT_L2_CACHESHAPE = 36,
AUXV_AT_L3_CACHESHAPE = 37,
};

private:
Expand Down
Expand Up @@ -576,7 +576,7 @@ addr_t DynamicLoaderPOSIXDYLD::ComputeLoadOffset() {
}

void DynamicLoaderPOSIXDYLD::EvalVdsoStatus() {
AuxVector::iterator I = m_auxv->FindEntry(AuxVector::AT_SYSINFO_EHDR);
AuxVector::iterator I = m_auxv->FindEntry(AuxVector::AUXV_AT_SYSINFO_EHDR);

if (I != m_auxv->end())
m_vdso_base = I->value;
Expand All @@ -589,7 +589,7 @@ addr_t DynamicLoaderPOSIXDYLD::GetEntryPoint() {
if (m_auxv.get() == NULL)
return LLDB_INVALID_ADDRESS;

AuxVector::iterator I = m_auxv->FindEntry(AuxVector::AT_ENTRY);
AuxVector::iterator I = m_auxv->FindEntry(AuxVector::AUXV_AT_ENTRY);

if (I == m_auxv->end())
return LLDB_INVALID_ADDRESS;
Expand Down

0 comments on commit cc72ede

Please sign in to comment.