History

fixes for previous commit

grischka committed 6 years ago

Commit 2b7cffa1 parent ef422955 files · +45 −40Browse files

Unified · Split

5 files
  1. tcc.h +3 −0
  2. tccelf.c +5 −5
  3. tccrun.c +7 −5
  4. tests/tests2/112_backtrace.expect +29 −29
  5. tests/tests2/Makefile +1 −1
tcc.h+3−0
@@ -150,9 +150,12 @@ extern long double strtold (const char *__nptr, char **__endptr); · 149 unmodified lines
150150 # elif defined __arm__
151151 # define TCC_TARGET_ARM
152152 # define TCC_ARM_EABI
153+# define TCC_ARM_VFP
153154 # define TCC_ARM_HARDFLOAT
154155 # elif defined __aarch64__
155156 # define TCC_TARGET_ARM64
157+# elif defined __riscv
158+# define TCC_TARGET_RISCV64
156159 # else
157160 # define TCC_TARGET_I386
158161 # endif
tccelf.c+5−5
@@ -1359,7 +1359,7 @@ static void set_local_sym(TCCState *s1, const char *name, Section *s, int offset · 1358 unmodified lines
13591359 ST_FUNC void tcc_add_btstub(TCCState *s1)
13601360 {
13611361 Section *s;
1362− int n, o, b;
1362+ int n, o;
13631363 CString cstr;
13641364
13651365 s = data_section;
@@ -1372,11 +1372,11 @@ ST_FUNC void tcc_add_btstub(TCCState *s1) · 6 unmodified lines
13721372 /* prog_base */
13731373 put_elf_reloc(s1->symtab, s, s->data_offset, R_DATA_PTR, 0);
13741374 section_ptr_add(s, PTR_SIZE);
1375− n = 2 * PTR_SIZE, b = 0;
1375+ n = 2 * PTR_SIZE;
13761376 #ifdef CONFIG_TCC_BCHECK
13771377 if (s1->do_bounds_check) {
13781378 put_ptr(s1, bounds_section, 0);
1379− n -= PTR_SIZE, b = 1;
1379+ n -= PTR_SIZE;
13801380 }
13811381 #endif
13821382 section_ptr_add(s, n);
@@ -1386,8 +1386,8 @@ ST_FUNC void tcc_add_btstub(TCCState *s1) · 3 unmodified lines
13861386 " extern void __bt_init(),*__rt_info[],__bt_init_dll();"
13871387 "__attribute__((constructor)) static void __bt_init_rt(){");
13881388 #ifdef TCC_TARGET_PE
1389− if (s1->output_type == TCC_OUTPUT_DLL)
1390− cstr_printf(&cstr, "__bt_init_dll(%d);", b);
1389+ if (s1->output_type == TCC_OUTPUT_DLL)
1390+ cstr_printf(&cstr, "__bt_init_dll(%d);", s1->do_bounds_check);
13911391 #endif
13921392 cstr_printf(&cstr, "__bt_init(__rt_info,%d);}",
13931393 s1->output_type == TCC_OUTPUT_DLL ? 0 : s1->rt_num_callers + 1);
tccrun.c+7−5
@@ -161,6 +161,9 @@ LIBTCCAPI int tcc_run(TCCState *s1, int argc, char **argv) · 160 unmodified lines
161161 rc->esym_start = (ElfW(Sym) *)(symtab_section->data);
162162 rc->esym_end = (ElfW(Sym) *)(symtab_section->data + symtab_section->data_offset);
163163 rc->elf_str = (char *)symtab_section->link->data;
164+#if PTR_SIZE == 8
165+ rc->prog_base = text_section->sh_addr & 0xffffffff00000000ULL;
166+#endif
164167 rc->top_func = tcc_get_symbol(s1, "main");
165168 rc->num_callers = s1->rt_num_callers;
166169 rc->do_jmp = 1;
@@ -405,11 +408,10 @@ next: · 238 unmodified lines
405408 if (sym->n_strx == 0) /* end of function */
406409 goto rel_pc;
407410 abs_pc:
408− if (sizeof sym->n_value < PTR_SIZE) {
409− /* Stab_Sym.n_value is only 32bits */
410− //fprintf(stderr, "pc = %p %p %p\n", pc, rc->prog_base, wanted_pc), fflush(stderr);
411− pc += rc->prog_base;
412− }
411+#if PTR_SIZE == 8
412+ /* Stab_Sym.n_value is only 32bits */
413+ pc += rc->prog_base;
414+#endif
413415 break;
414416 rel_pc:
415417 pc += func_addr;
tests/tests2/112_backtrace.expect+29−29
@@ -14,7 +14,7 @@ · 13 unmodified lines
1414 * f1()
1515 112_backtrace.c:38: at f1: BCHECK: ........ is outside of the region
1616 112_backtrace.c:43: by main
17−112_backtrace.c:38: at f1: BCHECK: invalid pointer ........, size 0x14 in memmove dest
17+112_backtrace.c:38: at f1: BCHECK: invalid pointer ........, size 0x? in memmove dest
1818 112_backtrace.c:43: by main
1919 [returns 255]
2020
@@ -33,132 +33,132 @@ · 12 unmodified lines
3333
3434 [test_bcheck_100]
3535 112_backtrace.c:107: at main: BCHECK: ........ is outside of the region
36−112_backtrace.c:107: at main: BCHECK: invalid pointer ........, size 0xa in memcpy dest
36+112_backtrace.c:107: at main: BCHECK: invalid pointer ........, size 0x? in memcpy dest
3737 [returns 255]
3838
3939 [test_bcheck_101]
4040 112_backtrace.c:109: at main: BCHECK: ........ is outside of the region
41−112_backtrace.c:109: at main: BCHECK: invalid pointer ........, size 0xa in memcpy src
41+112_backtrace.c:109: at main: BCHECK: invalid pointer ........, size 0x? in memcpy src
4242 [returns 255]
4343
4444 [test_bcheck_102]
45−112_backtrace.c:111: at main: BCHECK: overlapping regions ........(0x4), ........(0x4) in memcpy
45+112_backtrace.c:111: at main: BCHECK: overlapping regions ........(0x?), ........(0x?) in memcpy
4646 [returns 255]
4747
4848 [test_bcheck_103]
49−112_backtrace.c:113: at main: BCHECK: overlapping regions ........(0x4), ........(0x4) in memcpy
49+112_backtrace.c:113: at main: BCHECK: overlapping regions ........(0x?), ........(0x?) in memcpy
5050 [returns 255]
5151
5252 [test_bcheck_104]
5353 112_backtrace.c:115: at main: BCHECK: ........ is outside of the region
54−112_backtrace.c:115: at main: BCHECK: invalid pointer ........, size 0xa in memcmp s1
54+112_backtrace.c:115: at main: BCHECK: invalid pointer ........, size 0x? in memcmp s1
5555 [returns 255]
5656
5757 [test_bcheck_105]
5858 112_backtrace.c:117: at main: BCHECK: ........ is outside of the region
59−112_backtrace.c:117: at main: BCHECK: invalid pointer ........, size 0xa in memcmp s2
59+112_backtrace.c:117: at main: BCHECK: invalid pointer ........, size 0x? in memcmp s2
6060 [returns 255]
6161
6262 [test_bcheck_106]
6363 112_backtrace.c:119: at main: BCHECK: ........ is outside of the region
64−112_backtrace.c:119: at main: BCHECK: invalid pointer ........, size 0xa in memmove dest
64+112_backtrace.c:119: at main: BCHECK: invalid pointer ........, size 0x? in memmove dest
6565 [returns 255]
6666
6767 [test_bcheck_107]
6868 112_backtrace.c:121: at main: BCHECK: ........ is outside of the region
69−112_backtrace.c:121: at main: BCHECK: invalid pointer ........, size 0xa in memmove src
69+112_backtrace.c:121: at main: BCHECK: invalid pointer ........, size 0x? in memmove src
7070 [returns 255]
7171
7272 [test_bcheck_108]
7373 112_backtrace.c:123: at main: BCHECK: ........ is outside of the region
74−112_backtrace.c:123: at main: BCHECK: invalid pointer ........, size 0xa in memset
74+112_backtrace.c:123: at main: BCHECK: invalid pointer ........, size 0x? in memset
7575 [returns 255]
7676
7777 [test_bcheck_109]
7878 112_backtrace.c:125: at main: BCHECK: ........ is outside of the region
79−112_backtrace.c:125: at main: BCHECK: invalid pointer ........, size 0xb in strlen
79+112_backtrace.c:125: at main: BCHECK: invalid pointer ........, size 0x? in strlen
8080 [returns 255]
8181
8282 [test_bcheck_110]
8383 112_backtrace.c:127: at main: BCHECK: ........ is outside of the region
84−112_backtrace.c:127: at main: BCHECK: invalid pointer ........, size 0x4 in strcpy dest
84+112_backtrace.c:127: at main: BCHECK: invalid pointer ........, size 0x? in strcpy dest
8585 [returns 255]
8686
8787 [test_bcheck_111]
8888 112_backtrace.c:129: at main: BCHECK: ........ is outside of the region
89−112_backtrace.c:129: at main: BCHECK: invalid pointer ........, size 0x4 in strcpy src
89+112_backtrace.c:129: at main: BCHECK: invalid pointer ........, size 0x? in strcpy src
9090 [returns 255]
9191
9292 [test_bcheck_112]
93−112_backtrace.c:131: at main: BCHECK: overlapping regions ........(0x3), ........(0x3) in strcpy
93+112_backtrace.c:131: at main: BCHECK: overlapping regions ........(0x?), ........(0x?) in strcpy
9494 [returns 255]
9595
9696 [test_bcheck_113]
97−112_backtrace.c:133: at main: BCHECK: overlapping regions ........(0x4), ........(0x4) in strcpy
97+112_backtrace.c:133: at main: BCHECK: overlapping regions ........(0x?), ........(0x?) in strcpy
9898 [returns 255]
9999
100100 [test_bcheck_114]
101101 112_backtrace.c:135: at main: BCHECK: ........ is outside of the region
102−112_backtrace.c:135: at main: BCHECK: invalid pointer ........, size 0x4 in strncpy dest
102+112_backtrace.c:135: at main: BCHECK: invalid pointer ........, size 0x? in strncpy dest
103103 [returns 255]
104104
105105 [test_bcheck_115]
106106 112_backtrace.c:137: at main: BCHECK: ........ is outside of the region
107−112_backtrace.c:137: at main: BCHECK: invalid pointer ........, size 0x4 in strncpy src
107+112_backtrace.c:137: at main: BCHECK: invalid pointer ........, size 0x? in strncpy src
108108 [returns 255]
109109
110110 [test_bcheck_116]
111−112_backtrace.c:139: at main: BCHECK: overlapping regions ........(0x3), ........(0x3) in strncpy
111+112_backtrace.c:139: at main: BCHECK: overlapping regions ........(0x?), ........(0x?) in strncpy
112112 [returns 255]
113113
114114 [test_bcheck_117]
115−112_backtrace.c:141: at main: BCHECK: overlapping regions ........(0x4), ........(0x4) in strncpy
115+112_backtrace.c:141: at main: BCHECK: overlapping regions ........(0x?), ........(0x?) in strncpy
116116 [returns 255]
117117
118118 [test_bcheck_118]
119119 112_backtrace.c:143: at main: BCHECK: ........ is outside of the region
120−112_backtrace.c:143: at main: BCHECK: invalid pointer ........, size 0x9 in strcmp s1
120+112_backtrace.c:143: at main: BCHECK: invalid pointer ........, size 0x? in strcmp s1
121121 [returns 255]
122122
123123 [test_bcheck_119]
124124 112_backtrace.c:145: at main: BCHECK: ........ is outside of the region
125−112_backtrace.c:145: at main: BCHECK: invalid pointer ........, size 0x9 in strcmp s2
125+112_backtrace.c:145: at main: BCHECK: invalid pointer ........, size 0x? in strcmp s2
126126 [returns 255]
127127
128128 [test_bcheck_120]
129129 112_backtrace.c:147: at main: BCHECK: ........ is outside of the region
130−112_backtrace.c:147: at main: BCHECK: invalid pointer ........, size 0x6 in strncmp s1
130+112_backtrace.c:147: at main: BCHECK: invalid pointer ........, size 0x? in strncmp s1
131131 [returns 255]
132132
133133 [test_bcheck_121]
134134 112_backtrace.c:149: at main: BCHECK: ........ is outside of the region
135−112_backtrace.c:149: at main: BCHECK: invalid pointer ........, size 0x6 in strncmp s2
135+112_backtrace.c:149: at main: BCHECK: invalid pointer ........, size 0x? in strncmp s2
136136 [returns 255]
137137
138138 [test_bcheck_122]
139139 112_backtrace.c:151: at main: BCHECK: ........ is outside of the region
140−112_backtrace.c:151: at main: BCHECK: invalid pointer ........, size 0x6 in strcat dest
140+112_backtrace.c:151: at main: BCHECK: invalid pointer ........, size 0x? in strcat dest
141141 [returns 255]
142142
143143 [test_bcheck_123]
144144 112_backtrace.c:153: at main: BCHECK: ........ is outside of the region
145−112_backtrace.c:153: at main: BCHECK: invalid pointer ........, size 0x6 in strcat src
145+112_backtrace.c:153: at main: BCHECK: invalid pointer ........, size 0x? in strcat src
146146 [returns 255]
147147
148148 [test_bcheck_124]
149−112_backtrace.c:155: at main: BCHECK: overlapping regions ........(0x9), ........(0x6) in strcat
149+112_backtrace.c:155: at main: BCHECK: overlapping regions ........(0x?), ........(0x?) in strcat
150150 [returns 255]
151151
152152 [test_bcheck_125]
153−112_backtrace.c:157: at main: BCHECK: overlapping regions ........(0x4), ........(0x4) in strcat
153+112_backtrace.c:157: at main: BCHECK: overlapping regions ........(0x?), ........(0x?) in strcat
154154 [returns 255]
155155
156156 [test_bcheck_126]
157157 112_backtrace.c:159: at main: BCHECK: ........ is outside of the region
158−112_backtrace.c:159: at main: BCHECK: invalid pointer ........, size 0xb in strchr
158+112_backtrace.c:159: at main: BCHECK: invalid pointer ........, size 0x? in strchr
159159 [returns 255]
160160
161161 [test_bcheck_127]
162162 112_backtrace.c:161: at main: BCHECK: ........ is outside of the region
163−112_backtrace.c:161: at main: BCHECK: invalid pointer ........, size 0xb in strdup
163+112_backtrace.c:161: at main: BCHECK: invalid pointer ........, size 0x? in strdup
164164 [returns 255]
tests/tests2/Makefile+1−1
@@ -72,7 +72,7 @@ GEN-ALWAYS = · 71 unmodified lines
7272 108_constructor.test: NORUN = true
7373
7474 112_backtrace.test: FLAGS += -dt -b
75−112_backtrace.test: FILTER += -e 's;[0-9A-Fa-fx]\{8,\};........;g'
75+112_backtrace.test: FILTER += -e 's;[0-9A-Fa-fx]\{8,\};........;g' -e 's;0x[0-9A-Fa-f]\+;0x?;g'
7676
7777 # Filter source directory in warnings/errors (out-of-tree builds)
7878 FILTER = 2>&1 | sed -e 's,$(SRC)/,,g'

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