History

macos: section syms, strtab, runtime

uncovered by the backtrace/boundcheck tests: * handle STT_SECTION symbols * call tcc_add_runtime (to get the bcheck.o/bt-exe.o files added) * add .stab strtab into segments (we should probably add all stab syms to the output LC_SYMTAB eventually, but right now TCC uses 32 bit stabs, while mach-o uses 32/64bit stabs

Michael Matz committed 6 years ago

Commit 0b3c8361 parent 91cb4132 files · +5 −1Browse files

Unified · Split

2 files
  1. tccelf.c +2 −0
  2. tccmacho.c +3 −1
tccelf.c+2−0
@@ -1459,9 +1459,11 @@ ST_FUNC void tcc_add_runtime(TCCState *s1) · 1458 unmodified lines
1459 }1459 }
1460#endif1460#endif
1461 tcc_add_support(s1, TCC_LIBTCC1);1461 tcc_add_support(s1, TCC_LIBTCC1);
1462#ifndef TCC_TARGET_MACHO
1462 /* add crt end if not memory output */1463 /* add crt end if not memory output */
1463 if (s1->output_type != TCC_OUTPUT_MEMORY)1464 if (s1->output_type != TCC_OUTPUT_MEMORY)
1464 tcc_add_crt(s1, "crtn.o");1465 tcc_add_crt(s1, "crtn.o");
1466#endif
1465 }1467 }
1466}1468}
1467#endif1469#endif
tccmacho.c+3−1
@@ -419,6 +419,7 @@ static void convert_symbol(TCCState *s1, struct macho *mo, struct nlist_64 *pn) · 418 unmodified lines
419 case STT_NOTYPE:419 case STT_NOTYPE:
420 case STT_OBJECT:420 case STT_OBJECT:
421 case STT_FUNC:421 case STT_FUNC:
422 case STT_SECTION:
422 n.n_type = 0xe; /* default type is N_SECT */423 n.n_type = 0xe; /* default type is N_SECT */
423 break;424 break;
424 case STT_FILE:425 case STT_FILE:
@@ -609,7 +610,7 @@ static void collect_sections(TCCState *s1, struct macho *mo) · 184 unmodified lines
609 case SHT_FINI_ARRAY: sk = sk_fini; break;610 case SHT_FINI_ARRAY: sk = sk_fini; break;
610 case SHT_NOBITS: sk = sk_bss; break;611 case SHT_NOBITS: sk = sk_bss; break;
611 case SHT_SYMTAB: sk = sk_discard; break;612 case SHT_SYMTAB: sk = sk_discard; break;
612 case SHT_STRTAB: sk = sk_discard; break;613 case SHT_STRTAB: sk = s == stabstr_section ? sk_ro_data : sk_discard; break;
613 case SHT_RELX: sk = sk_discard; break;614 case SHT_RELX: sk = sk_discard; break;
614 case SHT_LINKEDIT: sk = sk_linkedit; break;615 case SHT_LINKEDIT: sk = sk_linkedit; break;
615 case SHT_PROGBITS:616 case SHT_PROGBITS:
@@ -809,6 +810,7 @@ ST_FUNC int macho_output_file(TCCState *s1, const char *filename) · 193 unmodified lines
809 if (s1->verbose)810 if (s1->verbose)
810 printf("<- %s\n", filename);811 printf("<- %s\n", filename);
811 812
813 tcc_add_runtime(s1);
812 resolve_common_syms(s1);814 resolve_common_syms(s1);
813 create_symtab(s1, &mo);815 create_symtab(s1, &mo);
814 check_relocs(s1, &mo);816 check_relocs(s1, &mo);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t