Make anonymous namespace as small as possible.

llvm-svn: 204982
This commit is contained in:
Rui Ueyama 2014-03-27 23:34:32 +00:00
parent 79c8e8f046
commit 9024c36f5a
8 changed files with 47 additions and 57 deletions

View File

@ -68,9 +68,11 @@ public:
GnuLdOptTable() : OptTable(infoTable, llvm::array_lengthof(infoTable)){}
};
} // anonymous namespace
// Get the Input file magic for creating appropriate InputGraph nodes.
error_code getFileMagic(ELFLinkingContext &ctx, StringRef path,
llvm::sys::fs::file_magic &magic) {
static error_code getFileMagic(ELFLinkingContext &ctx, StringRef path,
llvm::sys::fs::file_magic &magic) {
error_code ec = llvm::sys::fs::identify_magic(path, magic);
if (ec)
return ec;
@ -86,8 +88,6 @@ error_code getFileMagic(ELFLinkingContext &ctx, StringRef path,
return make_error_code(ReaderError::unknown_file_format);
}
} // namespace
llvm::ErrorOr<StringRef> ELFFileNode::getPath(const LinkingContext &) const {
if (!_isDashlPrefix)
return _path;

View File

@ -74,23 +74,25 @@ enum class Flavor {
core // -flavor core OR -core
};
Flavor strToFlavor(StringRef str) {
return llvm::StringSwitch<Flavor>(str)
.Case("gnu", Flavor::gnu_ld)
.Case("link", Flavor::win_link)
.Case("lld-link", Flavor::win_link)
.Case("darwin", Flavor::darwin_ld)
.Case("core", Flavor::core)
.Case("ld", Flavor::gnu_ld) // deprecated
.Default(Flavor::invalid);
}
struct ProgramNameParts {
StringRef _target;
StringRef _flavor;
};
ProgramNameParts parseProgramName(StringRef programName) {
} // anonymous namespace
static Flavor strToFlavor(StringRef str) {
return llvm::StringSwitch<Flavor>(str)
.Case("gnu", Flavor::gnu_ld)
.Case("link", Flavor::win_link)
.Case("lld-link", Flavor::win_link)
.Case("darwin", Flavor::darwin_ld)
.Case("core", Flavor::core)
.Case("ld", Flavor::gnu_ld) // deprecated
.Default(Flavor::invalid);
}
static ProgramNameParts parseProgramName(StringRef programName) {
SmallVector<StringRef, 3> components;
llvm::SplitString(programName, components, "-");
ProgramNameParts ret;
@ -120,9 +122,8 @@ ProgramNameParts parseProgramName(StringRef programName) {
return ret;
}
} // namespace
namespace lld {
bool UniversalDriver::link(int argc, const char *argv[],
raw_ostream &diagnostics) {
// Parse command line options using GnuLdOptions.td
@ -181,4 +182,5 @@ bool UniversalDriver::link(int argc, const char *argv[],
}
llvm_unreachable("Unrecognised flavor");
}
} // end namespace lld

View File

@ -17,10 +17,7 @@ using namespace lld;
using namespace elf;
using namespace llvm::ELF;
namespace {
inline
void applyReloc(uint8_t *loc, uint32_t result, uint32_t mask) {
static inline void applyReloc(uint8_t *loc, uint32_t result, uint32_t mask) {
auto target = reinterpret_cast<llvm::support::ulittle32_t *>(loc);
*target = (uint32_t(*target) & ~mask) | (result & mask);
}
@ -33,20 +30,20 @@ template <size_t BITS, class T> inline T signExtend(T val) {
/// \brief R_MIPS_32
/// local/external: word32 S + A (truncate)
void reloc32(uint8_t *location, uint64_t P, uint64_t S, int64_t A) {
static void reloc32(uint8_t *location, uint64_t P, uint64_t S, int64_t A) {
applyReloc(location, S + A, 0xffffffff);
}
/// \brief R_MIPS_26
/// local : ((A | ((P + 4) & 0x3F000000)) + S) >> 2
void reloc26loc(uint8_t *location, uint64_t P, uint64_t S, int32_t A) {
static void reloc26loc(uint8_t *location, uint64_t P, uint64_t S, int32_t A) {
uint32_t result = ((A << 2) | ((P + 4) & 0x3f000000)) + S;
applyReloc(location, result >> 2, 0x03ffffff);
}
/// \brief LLD_R_MIPS_GLOBAL_26
/// external: (sign-extend(A) + S) >> 2
void reloc26ext(uint8_t *location, uint64_t S, int32_t A) {
static void reloc26ext(uint8_t *location, uint64_t S, int32_t A) {
uint32_t result = signExtend<28>(A << 2) + S;
applyReloc(location, result >> 2, 0x03ffffff);
}
@ -54,8 +51,8 @@ void reloc26ext(uint8_t *location, uint64_t S, int32_t A) {
/// \brief R_MIPS_HI16
/// local/external: hi16 (AHL + S) - (short)(AHL + S) (truncate)
/// _gp_disp : hi16 (AHL + GP - P) - (short)(AHL + GP - P) (verify)
void relocHi16(uint8_t *location, uint64_t P, uint64_t S, int64_t AHL,
uint64_t GP, bool isGPDisp) {
static void relocHi16(uint8_t *location, uint64_t P, uint64_t S, int64_t AHL,
uint64_t GP, bool isGPDisp) {
int32_t result = 0;
if (isGPDisp)
@ -69,8 +66,8 @@ void relocHi16(uint8_t *location, uint64_t P, uint64_t S, int64_t AHL,
/// \brief R_MIPS_LO16
/// local/external: lo16 AHL + S (truncate)
/// _gp_disp : lo16 AHL + GP - P + 4 (verify)
void relocLo16(uint8_t *location, uint64_t P, uint64_t S, int64_t AHL,
uint64_t GP, bool isGPDisp) {
static void relocLo16(uint8_t *location, uint64_t P, uint64_t S, int64_t AHL,
uint64_t GP, bool isGPDisp) {
int32_t result = 0;
if (isGPDisp)
@ -83,8 +80,8 @@ void relocLo16(uint8_t *location, uint64_t P, uint64_t S, int64_t AHL,
/// \brief R_MIPS_GOT16
/// local/external: rel16 G (verify)
void relocGOT16(uint8_t *location, uint64_t P, uint64_t S, int64_t AHL,
uint64_t GP) {
static void relocGOT16(uint8_t *location, uint64_t P, uint64_t S, int64_t AHL,
uint64_t GP) {
// FIXME (simon): for local sym put high 16 bit of AHL to the GOT
int32_t G = (int32_t)(S - GP);
applyReloc(location, G, 0xffff);
@ -92,29 +89,27 @@ void relocGOT16(uint8_t *location, uint64_t P, uint64_t S, int64_t AHL,
/// \brief R_MIPS_CALL16
/// external: rel16 G (verify)
void relocCall16(uint8_t *location, uint64_t P, uint64_t S, int64_t A,
uint64_t GP) {
static void relocCall16(uint8_t *location, uint64_t P, uint64_t S, int64_t A,
uint64_t GP) {
int32_t G = (int32_t)(S - GP);
applyReloc(location, G, 0xffff);
}
/// \brief LLD_R_MIPS_32_HI16
void reloc32hi16(uint8_t *location, uint64_t S, int64_t A) {
static void reloc32hi16(uint8_t *location, uint64_t S, int64_t A) {
applyReloc(location, (S + A) & 0xffff0000, 0xffffffff);
}
/// \brief LLD_R_MIPS_HI16
void relocLldHi16(uint8_t *location, uint64_t S) {
static void relocLldHi16(uint8_t *location, uint64_t S) {
applyReloc(location, (S + 0x8000) >> 16, 0xffff);
}
/// \brief LLD_R_MIPS_LO16
void relocLldLo16(uint8_t *location, uint64_t S) {
static void relocLldLo16(uint8_t *location, uint64_t S) {
applyReloc(location, S, 0xffff);
}
} // end anon namespace
error_code MipsTargetRelocationHandler::applyRelocation(
ELFWriter &writer, llvm::FileOutputBuffer &buf, const lld::AtomLayout &atom,
const Reference &ref) const {

View File

@ -13,20 +13,18 @@
#include "Atoms.h"
#include "MipsELFFile.h"
namespace {
using namespace lld;
using namespace lld::elf;
using namespace llvm::ELF;
// Lazy resolver
const uint8_t mipsGot0AtomContent[] = { 0x00, 0x00, 0x00, 0x00 };
static const uint8_t mipsGot0AtomContent[] = { 0x00, 0x00, 0x00, 0x00 };
// Module pointer
const uint8_t mipsGotModulePointerAtomContent[] = { 0x00, 0x00, 0x00, 0x80 };
static const uint8_t mipsGotModulePointerAtomContent[] = { 0x00, 0x00, 0x00, 0x80 };
// PLT0 entry
const uint8_t mipsPlt0AtomContent[] = {
static const uint8_t mipsPlt0AtomContent[] = {
0x00, 0x00, 0x1c, 0x3c, // lui $28, %hi(&GOTPLT[0])
0x00, 0x00, 0x99, 0x8f, // lw $25, %lo(&GOTPLT[0])($28)
0x00, 0x00, 0x9c, 0x27, // addiu $28, $28, %lo(&GOTPLT[0])
@ -38,7 +36,7 @@ const uint8_t mipsPlt0AtomContent[] = {
};
// Regular PLT entry
const uint8_t mipsPltAAtomContent[] = {
static const uint8_t mipsPltAAtomContent[] = {
0x00, 0x00, 0x0f, 0x3c, // lui $15, %hi(.got.plt entry)
0x00, 0x00, 0xf9, 0x8d, // l[wd] $25, %lo(.got.plt entry)($15)
0x08, 0x00, 0x20, 0x03, // jr $25
@ -46,13 +44,15 @@ const uint8_t mipsPltAAtomContent[] = {
};
// LA25 stub entry
const uint8_t mipsLA25AtomContent[] = {
static const uint8_t mipsLA25AtomContent[] = {
0x00, 0x00, 0x19, 0x3c, // lui $25, %hi(func)
0x00, 0x00, 0x00, 0x08, // j func
0x00, 0x00, 0x39, 0x27, // addiu $25, $25, %lo(func)
0x00, 0x00, 0x00, 0x00 // nop
};
namespace {
/// \brief Abstract base class represent MIPS GOT entries.
class MipsGOTAtom : public GOTAtom {
public:

View File

@ -22,12 +22,12 @@ using namespace llvm;
using namespace lld;
namespace {
class DarwinLdParserTest
: public ParserTest<DarwinLdDriver, MachOLinkingContext> {
protected:
const LinkingContext *linkingContext() override { return &_context; }
};
}
TEST_F(DarwinLdParserTest, Basic) {
EXPECT_TRUE(parse("ld", "foo.o", "bar.o", nullptr));
@ -229,6 +229,3 @@ TEST_F(DarwinLdParserTest, llvmOptions) {
EXPECT_EQ(strcmp(options[0],"-debug-only"), 0);
EXPECT_EQ(strcmp(options[1],"foo"), 0);
}
} // end anonymous namespace

View File

@ -20,17 +20,15 @@ using namespace llvm;
using namespace lld;
namespace {
class GnuLdParserTest
: public ParserTest<GnuLdDriver, std::unique_ptr<ELFLinkingContext>> {
protected:
const LinkingContext *linkingContext() override { return _context.get(); }
};
}
TEST_F(GnuLdParserTest, Empty) {
EXPECT_FALSE(parse("ld", nullptr));
EXPECT_EQ(linkingContext(), nullptr);
EXPECT_EQ("No input files\n", errorMessage());
}
} // end anonymous namespace

View File

@ -141,6 +141,8 @@ protected:
std::unique_ptr<InputGraph> _inputGraph;
};
} // end anonymous namespace
TEST_F(InputGraphTest, Basic) {
EXPECT_EQ(0, inputFileCount());
ErrorOr<InputElement *> nextElement = inputGraph().getNextInputElement();
@ -619,5 +621,3 @@ TEST_F(InputGraphTest, HiddenNodeTests) {
nextElement = inputGraph().getNextInputElement();
EXPECT_EQ(InputGraphError::no_more_elements, nextElement.getError());
}
}

View File

@ -25,12 +25,12 @@ using namespace llvm;
using namespace lld;
namespace {
class WinLinkParserTest
: public ParserTest<WinLinkDriver, PECOFFLinkingContext> {
protected:
const LinkingContext *linkingContext() override { return &_context; }
};
}
TEST_F(WinLinkParserTest, Basic) {
EXPECT_TRUE(parse("link.exe", "/subsystem:console", "/out:a.exe",
@ -682,5 +682,3 @@ TEST_F(WinLinkParserTest, DefEntryNameWindows) {
EXPECT_TRUE(parse("link.exe", "/subsystem:windows", "a.obj", nullptr));
EXPECT_EQ("_WinMainCRTStartup", _context.entrySymbolName());
}
} // end anonymous namespace