forked from OSchip/llvm-project
Use llvm::Optional instead of UINT_MAX to represent a null value.
llvm-svn: 315168
This commit is contained in:
parent
656be31174
commit
0ae2c24c5d
|
|
@ -815,8 +815,7 @@ std::vector<PhdrEntry *> LinkerScript::createPhdrs() {
|
|||
// Process PHDRS and FILEHDR keywords because they are not
|
||||
// real output sections and cannot be added in the following loop.
|
||||
for (const PhdrsCommand &Cmd : Opt.PhdrsCommands) {
|
||||
PhdrEntry *Phdr =
|
||||
make<PhdrEntry>(Cmd.Type, Cmd.Flags == UINT_MAX ? PF_R : Cmd.Flags);
|
||||
PhdrEntry *Phdr = make<PhdrEntry>(Cmd.Type, Cmd.Flags ? *Cmd.Flags : PF_R);
|
||||
|
||||
if (Cmd.HasFilehdr)
|
||||
Phdr->add(Out::ElfHeader);
|
||||
|
|
@ -835,7 +834,7 @@ std::vector<PhdrEntry *> LinkerScript::createPhdrs() {
|
|||
// Assign headers specified by linker script
|
||||
for (size_t Id : getPhdrIndices(Sec)) {
|
||||
Ret[Id]->add(Sec);
|
||||
if (Opt.PhdrsCommands[Id].Flags == UINT_MAX)
|
||||
if (!Opt.PhdrsCommands[Id].Flags.hasValue())
|
||||
Ret[Id]->p_flags |= Sec->getPhdrFlags();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -166,11 +166,11 @@ struct BytesDataCommand : BaseCommand {
|
|||
|
||||
struct PhdrsCommand {
|
||||
StringRef Name;
|
||||
unsigned Type;
|
||||
bool HasFilehdr;
|
||||
bool HasPhdrs;
|
||||
unsigned Flags;
|
||||
Expr LMAExpr;
|
||||
unsigned Type = llvm::ELF::PT_NULL;
|
||||
bool HasFilehdr = false;
|
||||
bool HasPhdrs = false;
|
||||
llvm::Optional<unsigned> Flags;
|
||||
Expr LMAExpr = nullptr;
|
||||
};
|
||||
|
||||
// ScriptConfiguration holds linker script parse results.
|
||||
|
|
|
|||
|
|
@ -388,25 +388,26 @@ void ScriptParser::readOutputFormat() {
|
|||
|
||||
void ScriptParser::readPhdrs() {
|
||||
expect("{");
|
||||
while (!ErrorCount && !consume("}")) {
|
||||
Script->Opt.PhdrsCommands.push_back(
|
||||
{next(), PT_NULL, false, false, UINT_MAX, nullptr});
|
||||
|
||||
PhdrsCommand &PhdrCmd = Script->Opt.PhdrsCommands.back();
|
||||
PhdrCmd.Type = readPhdrType();
|
||||
while (!ErrorCount && !consume("}")) {
|
||||
PhdrsCommand Cmd;
|
||||
Cmd.Name = next();
|
||||
Cmd.Type = readPhdrType();
|
||||
|
||||
while (!ErrorCount && !consume(";")) {
|
||||
if (consume("FILEHDR"))
|
||||
PhdrCmd.HasFilehdr = true;
|
||||
Cmd.HasFilehdr = true;
|
||||
else if (consume("PHDRS"))
|
||||
PhdrCmd.HasPhdrs = true;
|
||||
Cmd.HasPhdrs = true;
|
||||
else if (consume("AT"))
|
||||
PhdrCmd.LMAExpr = readParenExpr();
|
||||
Cmd.LMAExpr = readParenExpr();
|
||||
else if (consume("FLAGS"))
|
||||
PhdrCmd.Flags = readParenExpr()().getValue();
|
||||
Cmd.Flags = readParenExpr()().getValue();
|
||||
else
|
||||
setError("unexpected header attribute: " + next());
|
||||
}
|
||||
|
||||
Script->Opt.PhdrsCommands.push_back(Cmd);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue