aboutsummaryrefslogtreecommitdiff
path: root/tccelf.c
diff options
context:
space:
mode:
authorbellard <bellard>2003-04-27 11:45:01 +0000
committerbellard <bellard>2003-04-27 11:45:01 +0000
commit2b64f2f5705384aa85b5d65c89af7c9215129917 (patch)
tree12d8e89903e8464b5d8452c39e893f960a588807 /tccelf.c
parent7828683e609c0d2b03193a78a0aaaf9368c8f03b (diff)
downloadtinycc-2b64f2f5705384aa85b5d65c89af7c9215129917.tar.gz
tinycc-2b64f2f5705384aa85b5d65c89af7c9215129917.tar.bz2
added -nostdlib
Diffstat (limited to 'tccelf.c')
-rw-r--r--tccelf.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/tccelf.c b/tccelf.c
index e90ee6c..c3167f0 100644
--- a/tccelf.c
+++ b/tccelf.c
@@ -778,8 +778,10 @@ static void tcc_add_runtime(TCCState *s1)
int i;
Section *s;
- snprintf(buf, sizeof(buf), "%s/%s", tcc_lib_path, "libtcc1.o");
- tcc_add_file(s1, buf);
+ if (!s1->nostdlib) {
+ snprintf(buf, sizeof(buf), "%s/%s", tcc_lib_path, "libtcc1.o");
+ tcc_add_file(s1, buf);
+ }
#ifdef CONFIG_TCC_BCHECK
if (do_bounds_check) {
unsigned long *ptr;
@@ -811,7 +813,7 @@ static void tcc_add_runtime(TCCState *s1)
}
#endif
/* add libc if not memory output */
- if (s1->output_type != TCC_OUTPUT_MEMORY) {
+ if (s1->output_type != TCC_OUTPUT_MEMORY && !s1->nostdlib) {
tcc_add_library(s1, "c");
tcc_add_file(s1, CONFIG_TCC_CRT_PREFIX "/crtn.o");
}
@@ -1248,12 +1250,14 @@ int tcc_output_file(TCCState *s1, const char *filename)
p = s1->plt->data;
p_end = p + s1->plt->data_offset;
- put32(p + 2, get32(p + 2) + s1->got->sh_addr);
- put32(p + 8, get32(p + 8) + s1->got->sh_addr);
- p += 16;
- while (p < p_end) {
+ if (p < p_end) {
put32(p + 2, get32(p + 2) + s1->got->sh_addr);
+ put32(p + 8, get32(p + 8) + s1->got->sh_addr);
p += 16;
+ while (p < p_end) {
+ put32(p + 2, get32(p + 2) + s1->got->sh_addr);
+ p += 16;
+ }
}
}