// Handle relocations found in ELF object files.
case 256 + R_X86_64_PC32:
- if(targ->dynimpname != nil && !(targ->cgoexport & CgoExportDynamic))
+ if(targ->dynimpname != nil && !targ->cgoexport)
diag("unexpected R_X86_64_PC32 relocation for dynamic symbol %s", targ->name);
if(targ->type == 0 || targ->type == SXREF)
diag("unknown symbol %s in pcrel", targ->name);
case 256 + R_X86_64_PLT32:
r->type = D_PCREL;
r->add += 4;
- if(targ->dynimpname != nil && !(targ->cgoexport & CgoExportDynamic)) {
+ if(targ->dynimpname != nil && !targ->cgoexport) {
addpltsym(targ);
r->sym = lookup(".plt", 0);
r->add += targ->plt;
return;
case 256 + R_X86_64_GOTPCREL:
- if(targ->dynimpname == nil || (targ->cgoexport & CgoExportDynamic)) {
+ if(targ->dynimpname == nil || targ->cgoexport) {
// have symbol
if(r->off >= 2 && s->p[r->off-2] == 0x8b) {
// turn MOVQ of GOT entry into LEAQ of symbol itself
return;
case 256 + R_X86_64_64:
- if(targ->dynimpname != nil && !(targ->cgoexport & CgoExportDynamic))
+ if(targ->dynimpname != nil && !targ->cgoexport)
diag("unexpected R_X86_64_64 relocation for dynamic symbol %s", targ->name);
r->type = D_ADDR;
return;
case 512 + MACHO_X86_64_RELOC_BRANCH*2 + 0:
// TODO: What is the difference between all these?
r->type = D_ADDR;
- if(targ->dynimpname != nil && !(targ->cgoexport & CgoExportDynamic))
+ if(targ->dynimpname != nil && !targ->cgoexport)
diag("unexpected reloc for dynamic symbol %s", targ->name);
return;
case 512 + MACHO_X86_64_RELOC_BRANCH*2 + 1:
- if(targ->dynimpname != nil && !(targ->cgoexport & CgoExportDynamic)) {
+ if(targ->dynimpname != nil && !targ->cgoexport) {
addpltsym(targ);
r->sym = lookup(".plt", 0);
r->add = targ->plt;
case 512 + MACHO_X86_64_RELOC_SIGNED_2*2 + 1:
case 512 + MACHO_X86_64_RELOC_SIGNED_4*2 + 1:
r->type = D_PCREL;
- if(targ->dynimpname != nil && !(targ->cgoexport & CgoExportDynamic))
+ if(targ->dynimpname != nil && !targ->cgoexport)
diag("unexpected pc-relative reloc for dynamic symbol %s", targ->name);
return;
case 512 + MACHO_X86_64_RELOC_GOT_LOAD*2 + 1:
- if(targ->dynimpname == nil || (targ->cgoexport & CgoExportDynamic)) {
+ if(targ->dynimpname == nil || targ->cgoexport) {
// have symbol
// turn MOVQ of GOT entry into LEAQ of symbol itself
if(r->off < 2 || s->p[r->off-2] != 0x8b) {
}
// fall through
case 512 + MACHO_X86_64_RELOC_GOT*2 + 1:
- if(targ->dynimpname == nil || (targ->cgoexport & CgoExportDynamic))
+ if(targ->dynimpname == nil || targ->cgoexport)
diag("unexpected GOT reloc for non-dynamic symbol %s", targ->name);
addgotsym(targ);
r->type = D_PCREL;
}
// Handle references to ELF symbols from our own object files.
- if(targ->dynimpname == nil || (targ->cgoexport & CgoExportDynamic))
+ if(targ->dynimpname == nil || targ->cgoexport)
return;
switch(r->type) {
adduint32(d, addstring(lookup(".dynstr", 0), name));
/* type */
t = STB_GLOBAL << 4;
- if((s->cgoexport & CgoExportDynamic) && (s->type&SMASK) == STEXT)
+ if(s->cgoexport && (s->type&SMASK) == STEXT)
t |= STT_FUNC;
else
t |= STT_OBJECT;
adduint8(d, 0);
/* section where symbol is defined */
- if(!(s->cgoexport & CgoExportDynamic) && s->dynimpname != nil)
+ if(!s->cgoexport && s->dynimpname != nil)
adduint16(d, SHN_UNDEF);
else {
switch(s->type) {
// Handle relocations found in ELF object files.
case 256 + R_386_PC32:
- if(targ->dynimpname != nil && !(targ->cgoexport & CgoExportDynamic))
+ if(targ->dynimpname != nil && !targ->cgoexport)
diag("unexpected R_386_PC32 relocation for dynamic symbol %s", targ->name);
if(targ->type == 0 || targ->type == SXREF)
diag("unknown symbol %s in pcrel", targ->name);
case 256 + R_386_PLT32:
r->type = D_PCREL;
r->add += 4;
- if(targ->dynimpname != nil && !(targ->cgoexport & CgoExportDynamic)) {
+ if(targ->dynimpname != nil && !targ->cgoexport) {
addpltsym(targ);
r->sym = lookup(".plt", 0);
r->add += targ->plt;
return;
case 256 + R_386_GOT32:
- if(targ->dynimpname == nil || (targ->cgoexport & CgoExportDynamic)) {
+ if(targ->dynimpname == nil || targ->cgoexport) {
// have symbol
// turn MOVL of GOT entry into LEAL of symbol itself
if(r->off < 2 || s->p[r->off-2] != 0x8b) {
return;
case 256 + R_386_32:
- if(targ->dynimpname != nil && !(targ->cgoexport & CgoExportDynamic))
+ if(targ->dynimpname != nil && !targ->cgoexport)
diag("unexpected R_386_32 relocation for dynamic symbol %s", targ->name);
r->type = D_ADDR;
return;
case 512 + MACHO_GENERIC_RELOC_VANILLA*2 + 0:
r->type = D_ADDR;
- if(targ->dynimpname != nil && !(targ->cgoexport & CgoExportDynamic))
+ if(targ->dynimpname != nil && !targ->cgoexport)
diag("unexpected reloc for dynamic symbol %s", targ->name);
return;
case 512 + MACHO_GENERIC_RELOC_VANILLA*2 + 1:
- if(targ->dynimpname != nil && !(targ->cgoexport & CgoExportDynamic)) {
+ if(targ->dynimpname != nil && !targ->cgoexport) {
addpltsym(targ);
r->sym = lookup(".plt", 0);
r->add = targ->plt;
return;
case 512 + MACHO_FAKE_GOTPCREL:
- if(targ->dynimpname == nil || (targ->cgoexport & CgoExportDynamic)) {
+ if(targ->dynimpname == nil || targ->cgoexport) {
// have symbol
// turn MOVL of GOT entry into LEAL of symbol itself
if(r->off < 2 || s->p[r->off-2] != 0x8b) {
}
// Handle references to ELF symbols from our own object files.
- if(targ->dynimpname == nil || (targ->cgoexport & CgoExportDynamic))
+ if(targ->dynimpname == nil || targ->cgoexport)
return;
switch(r->type) {
/* type */
t = STB_GLOBAL << 4;
- if((s->cgoexport & CgoExportDynamic) && (s->type&SMASK) == STEXT)
+ if(s->cgoexport && (s->type&SMASK) == STEXT)
t |= STT_FUNC;
else
t |= STT_OBJECT;
adduint8(d, 0);
/* shndx */
- if(!(s->cgoexport & CgoExportDynamic) && s->dynimpname != nil)
+ if(!s->cgoexport && s->dynimpname != nil)
adduint16(d, SHN_UNDEF);
else {
switch(s->type) {