Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compilation under Arduino ESP8266? #550

Open
benjamind opened this issue Apr 3, 2016 · 4 comments
Open

Compilation under Arduino ESP8266? #550

benjamind opened this issue Apr 3, 2016 · 4 comments
Assignees

Comments

@benjamind
Copy link

Trying to build this in the Arduino IDE, and with Platform.io, for an ESP8266.

I brought the two v7 files in, set CS_PLATFORM to CS_P_ESP_LWIP and CS_BUILD_PROFILE to minimal. But I get an undefined reference to 'ctype_ptr' error.

Seems we're missing a bunch of stdio functions, fprintf, and setjmp as well. Any ideas how to go about fixing this?

xtensa-lx106-elf-ar rcs .pioenvs\huzzah\libv7.a .pioenvs\huzzah\v7\v7.o
xtensa-lx106-elf-ranlib .pioenvs\huzzah\libv7.a
xtensa-lx106-elf-g++ -o .pioenvs\huzzah\firmware.elf -Os -nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,register_chipv6_phy -Wl,-T"esp8266.flash.4m1m.ld" .pioenvs\huzzah\src\WifiManager.o .pioenvs\huzzah\src\tmp_ino_to.o -LC:\Users\Ben\.platformio\packages\framework-arduinoespressif\tools\sdk\lib -LC:\Users\Ben\.platformio\packages\ldscripts -L.pioenvs\huzzah -Wl,--start-group .pioenvs\huzzah\libFrameworkArduinoVariant.a .pioenvs\huzzah\libFrameworkArduino.a -lmesh -lwpa2 -lsmartconfig -lpp -lmain -lwpa -llwip -lnet80211 -lwps -lcrypto -lphy -lhal -laxtls -lgcc -lm .pioenvs\huzzah\libESP8266WiFi.a .pioenvs\huzzah\libESP8266mDNS.a .pioenvs\huzzah\libArduinoOTA.a .pioenvs\huzzah\libDNSServer.a .pioenvs\huzzah\libFastLED.a .pioenvs\huzzah\libSoftwareSerial.a .pioenvs\huzzah\libESP8266WebServer.a .pioenvs\huzzah\libHash.a .pioenvs\huzzah\libEthernet.a .pioenvs\huzzah\libSPI.a .pioenvs\huzzah\libarduinoWebSockets.a .pioenvs\huzzah\libArduinoJson.a .pioenvs\huzzah\libTicker.a .pioenvs\huzzah\libv7.a -Wl,--end-group
.pioenvs\huzzah\libv7.a(v7.o):(.text.skip_to_next_tok+0x0): undefined reference to `__ctype_ptr__'
.pioenvs\huzzah\libv7.a(v7.o):(.text.gc_check_valid_allocation_seqn+0x0): undefined reference to `_impure_ptr'
.pioenvs\huzzah\libv7.a(v7.o):(.text.gc_check_valid_allocation_seqn+0xc): undefined reference to `fprintf'
.pioenvs\huzzah\libv7.a(v7.o): In function `gc_check_valid_allocation_seqn':
v7.c:(.text.gc_check_valid_allocation_seqn+0x47): undefined reference to `fprintf'
v7.c:(.text.gc_check_valid_allocation_seqn+0x56): undefined reference to `fprintf'
.pioenvs\huzzah\libv7.a(v7.o):(.text.re_rng2set+0x0): undefined reference to `longjmp'
.pioenvs\huzzah\libv7.a(v7.o): In function `re_rng2set':
v7.c:(.text.re_rng2set+0x2e): undefined reference to `longjmp'
.pioenvs\huzzah\libv7.a(v7.o): In function `re_nchset':
v7.c:(.text.re_nchset+0x14): undefined reference to `longjmp'
.pioenvs\huzzah\libv7.a(v7.o): In function `re_nrep':
v7.c:(.text.re_nrep+0x3b): undefined reference to `longjmp'
.pioenvs\huzzah\libv7.a(v7.o): In function `gc_dump_arena_stats':
v7.c:(.text.gc_dump_arena_stats+0x2f): undefined reference to `fprintf'
.pioenvs\huzzah\libv7.a(v7.o): In function `re_lexer':
v7.c:(.text.re_lexer+0x1cb): undefined reference to `longjmp'
.pioenvs\huzzah\libv7.a(v7.o): In function `re_parse_la':
v7.c:(.text.re_parse_la+0x183): undefined reference to `longjmp'
.pioenvs\huzzah\libv7.a(v7.o):(.text.slre_compile+0x4): undefined reference to `setjmp'
.pioenvs\huzzah\libv7.a(v7.o): In function `slre_compile':
v7.c:(.text.slre_compile+0x56): undefined reference to `setjmp'
v7.c:(.text.slre_compile+0x114): undefined reference to `longjmp'
.pioenvs\huzzah\libv7.a(v7.o): In function `b_exec':
v7.c:(.text.b_exec+0x463): undefined reference to `fprintf'
v7.c:(.text.b_exec+0x512): undefined reference to `fprintf'
.pioenvs\huzzah\libv7.a(v7.o): In function `v7_throwf':
v7.c:(.text.v7_throwf+0xaa): undefined reference to `fprintf'
v7.c:(.text.v7_throwf+0x123): undefined reference to `fprintf'
.pioenvs\huzzah\libv7.a(v7.o):(.text.parse$constprop$79+0x30): undefined reference to `fputs'
.pioenvs\huzzah\libv7.a(v7.o): In function `parse$constprop$79':
v7.c:(.text.parse$constprop$79+0x12a): undefined reference to `fputs'
v7.c:(.text.parse$constprop$79+0x13e): undefined reference to `fprintf'
.pioenvs\huzzah\src\tmp_ino_to.o:(.text._ZL15js_fill_rainbowP2v7Py+0x0): undefined reference to `v7_arg(v7*, unsigned long)'
.pioenvs\huzzah\src\tmp_ino_to.o:(.text._ZL15js_fill_rainbowP2v7Py+0x14): undefined reference to `v7_arg(v7*, unsigned long)'
.pioenvs\huzzah\src\tmp_ino_to.o: In function `js_fill_rainbow(v7*, unsigned long long*)':
tmp_ino_to.cpp:(.text._ZL15js_fill_rainbowP2v7Py+0x21): undefined reference to `v7_arg(v7*, unsigned long)'
.pioenvs\huzzah\src\tmp_ino_to.o:(.text._Z15startJavascriptv+0x14): undefined reference to `v7_create()'
.pioenvs\huzzah\src\tmp_ino_to.o:(.text._Z15startJavascriptv+0x18): undefined reference to `v7_get_global(v7*)'
.pioenvs\huzzah\src\tmp_ino_to.o:(.text._Z15startJavascriptv+0x1c): undefined reference to `v7_exec(v7*, char const*, unsigned long long*)'
.pioenvs\huzzah\src\tmp_ino_to.o:(.text._Z15startJavascriptv+0x20): undefined reference to `v7_destroy(v7*)'
.pioenvs\huzzah\src\tmp_ino_to.o:(.text._Z15startJavascriptv+0x2f): undefined reference to `v7_create()'
.pioenvs\huzzah\src\tmp_ino_to.o: In function `startJavascript()':
tmp_ino_to.cpp:(.text._Z15startJavascriptv+0x3c): undefined reference to `v7_get_global(v7*)'
tmp_ino_to.cpp:(.text._Z15startJavascriptv+0x5a): undefined reference to `v7_exec(v7*, char const*, unsigned long long*)'
tmp_ino_to.cpp:(.text._Z15startJavascriptv+0x7a): undefined reference to `v7_destroy(v7*)'
collect2.exe: error: ld returned 1 exit status
scons: *** [.pioenvs\huzzah\firmware.elf] Error 1
@cpq
Copy link
Member

cpq commented Apr 5, 2016

@dimonomid could you address it please?

@benjamind
Copy link
Author

I've found that I can compile this using the feature/libc branch of Arduino ESP8266, after adding the putc.a symbols back into the libcmin build. Compilation and linking now work with CS_DISABLE_STDIO and V7_BUILD_PROFILE 1, however I get a crash on v7_create().

@benjamind
Copy link
Author

So the stack trace gives me this:

0x40100711: calloc at E:\Users\Ben\Documents\Arduino\hardware\esp8266com\esp8266\cores\esp8266\umm_malloc/umm_malloc.c line 1682
0x4020135c: gc_new_block at E:\Temp\build93b5748ed8fde4d231b4b4b5930427cd.tmp\sketch/v7.c line 13957
0x4020f232: gc_arena_init at E:\Temp\build93b5748ed8fde4d231b4b4b5930427cd.tmp\sketch/v7.c line 13957
:  (inlined by) v7_create_opt at E:\Temp\build93b5748ed8fde4d231b4b4b5930427cd.tmp\sketch/v7.c line 14075
0x401006e4: malloc at E:\Users\Ben\Documents\Arduino\hardware\esp8266com\esp8266\cores\esp8266\umm_malloc/umm_malloc.c line 1662
0x402143f1: Print::write(char const*) at E:\Users\Ben\Documents\Arduino\hardware\esp8266com\esp8266\cores\esp8266/Print.cpp line 188
0x4020fa4c: v7_create at E:\Temp\build93b5748ed8fde4d231b4b4b5930427cd.tmp\sketch/v7.c line 13957
0x40213d41: setup at E:\Workspace\ArduinoV7/ArduinoV7.ino line 38
0x40214894: loop_wrapper at E:\Users\Ben\Documents\Arduino\hardware\esp8266com\esp8266\cores\esp8266/core_esp8266_main.cpp line 43
0x40100964: cont_norm at E:\Users\Ben\Documents\Arduino\hardware\esp8266com\esp8266\cores\esp8266/cont.S line 109

Looks like an issue in calloc, not sure how to proceed from here. Anyone else had any luck compiling under ESP8266 Arduino?

@sfranzyshen
Copy link

Manually add the esp8266 arduino board support (follow the instructions here: https://github.com/esp8266/Arduino#using-git-version) instead of using the board manager from the arduino ide ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants