ARM-software / CSAL

Coresight Access Library
Other
107 stars 42 forks source link

Compiler warnings #22

Closed odin- closed 3 months ago

odin- commented 3 months ago

Compiler:

eklahen-> aarch64-none-elf-gcc --version aarch64-none-elf-gcc (Arm GNU Toolchain 12.2.Rel1 (Build arm-12.24)) 12.2.1 20221205 Copyright (C) 2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Building using

-DBAREMETAL -DLPAE -DDEBUG -DDIAG=1

Makeflags:

-c -std=c99 \ -mtune=generic -march=armv8.2-a -mabi=lp64 \ -Os -Wall -Wpedantic -Wextra -Wno-format -fpie -fPIE -mstrict-align

Warnings:

../../csal/src/cs_access_cmnfns.c: In function '_cs_unlock': ../../csal/src/cs_access_cmnfns.c:618:26: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 618 d->is_unlocked = 1; ^ ../../csal/src/cs_access_cmnfns.c: In function 'io_map': ../../csal/src/cs_access_cmnfns.c:656:57: warning: unused parameter 'writable' [-Wunused-parameter] 656 void *io_map(cs_physaddr_t addr, unsigned int size, int writable) ~~^~ ../../csal/src/cs_access_cmnfns.c: In function 'io_unmap': ../../csal/src/cs_access_cmnfns.c:700:30: warning: unused parameter 'addr' [-Wunused-parameter] 700 void io_unmap(void volatile *addr, unsigned int size) ~~~^~~~ ../../csal/src/cs_access_cmnfns.c:700:49: warning: unused parameter 'size' [-Wunused-parameter] 700 void io_unmap(void volatile *addr, unsigned int size) ~~~^~ ../../csal/src/cs_init_manage.c: In function 'cs_init': ../../csal/src/cs_init_manage.c:45:21: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 45 G.init_called = 1; ^ ../../csal/src/cs_init_manage.c:46:27: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 46 G.registration_open = 1; ^ ../../csal/src/cs_init_manage.c:47:22: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 47 G.force_writes = 1; / While we're debugging it... / ^ ../../csal/src/cs_init_manage.c:49:23: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 49 G.diag_checking = 1; ^ ../../csal/src/cs_init_manage.c:57:24: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 57 G.phys_addr_lpae = 1; / 1 if built with LPAE / ^ ../../csal/src/cs_memap.c: In function 'cs_memap_write_TAR': ../../csal/src/cs_memap.c:126:28: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 126 d->v.memap.TAR_valid = 1; ^ ../../csal/src/cs_reg_access.c: In function 'cs_device_data_barrier': ../../csal/src/cs_reg_access.c:133:41: warning: unused parameter 'dev' [-Wunused-parameter] 133 void cs_device_data_barrier(cs_device_t dev) ~~^ ../../csal/src/cs_reg_access.c: In function 'cs_device_instruction_barrier': ../../csal/src/cs_reg_access.c:142:48: warning: unused parameter 'dev' [-Wunused-parameter] 142 void cs_device_instruction_barrier(cs_device_t dev) ~~^ ../../csal/src/cs_stub_devmemd.c:200: warning: ISO C forbids an empty translation unit [-Wpedantic] In file included from ../../csal/src/cs_access_cmnfns.h:57, from ../../csal/src/cs_sw_stim.c:19: ../../csal/src/cs_sw_stim.c: In function 'cs_trace_stimulus': ../../csal/src/cs_sw_stim.c:123:17: warning: comparison of integer expressions of different signedness: 'unsigned int' and 'int' [-Wsign-compare] 123 assert(port < cs_trace_swstim_get_port_count(dev)); ^ ../../csal/src/cs_sw_stim.c: In function 'cs_stm_ext_write': ../../csal/src/cs_sw_stim.c:296:17: warning: comparison of integer expressions of different signedness: 'unsigned int' and 'int' [-Wsign-compare] 296 assert(port < cs_trace_swstim_get_port_count(dev)); ^ ../../csal/src/cs_topology.c: In function 'cs_device_or_romtable_register': ../../csal/src/cs_topology.c:155:30: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 155 G.devaff0_used = 1; ^ ../../csal/src/cs_topology.c:206:46: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 206 d->v.etb.is_tmc_device = 1; ^ ../../csal/src/cs_topology.c:247:42: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 247 d->v.etb.is_tmc_device = 1; ^ ../../csal/src/cs_topology.c:312:44: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 312 d->v.stm.basic_ports = 1; ^ ../../csal/src/cs_topology.c:315:44: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 315 d->v.stm.basic_ports = 1; ^ ../../csal/src/cs_topology.c:449:30: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 449 d->is_unlocked = 1; ^ ../../csal/src/cs_topology.c:450:42: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 450 d->is_permanently_unlocked = 1; ^ ../../csal/src/cs_topology.c: In function 'cs_scan_romtable': ../../csal/src/cs_topology.c:731:68: warning: operand of '?:' changes signedness from 'int' to 'unsigned int' due to unsignedness of other operand [-Wsign-compare] 731 int power_domain = (entry & 4) ? ((entry >> 4) & 31) : -1; ^~ ../../csal/src/cs_trace_metadata.c: In function 'cs_get_trace_metadata': ../../csal/src/cs_trace_metadata.c:167:31: warning: unused parameter 'mtype' [-Wunused-parameter] 167 int cs_get_trace_metadata(int mtype, cs_device_t dev, int trace_id, ~~^~~ In file included from ../../csal/src/cs_access_cmnfns.h:57, from ../../csal/src/cs_trace_sink.c:19: ../../csal/src/cs_trace_sink.c: In function 'cs_set_buffer_trigger_counter': ../../csal/src/cs_trace_sink.c:164:18: warning: comparison of integer expressions of different signedness: 'unsigned int' and 'int' [-Wsign-compare] 164 assert(bytes <= cs_get_buffer_size_bytes(dev)); ^~ ../../csal/src/cs_trace_sink.c: In function 'cs_get_trace_data': ../../csal/src/cs_trace_sink.c:249:34: warning: overflow in conversion from 'int' to 'signed char:1' changes value from '1' to '-1' [-Woverflow] 249 d->v.etb.currently_reading = 1;
algrant-arm commented 3 months ago

Thanks - just pushed a change that should fix these, although with compiler warnings there's always a risk of being sensitive to compiler version. We'll try and improve test coverage.

odin- commented 3 months ago

Great. I'll try it out.

odin- commented 3 months ago

Your commit solved everything, except below. Thank you!

Perhaps this one is a bit picky:

../../csal/src/cs_stub_devmemd.c:200: warning: ISO C forbids an empty translation unit [-Wpedantic]

algrant-arm commented 3 months ago

What options are you using? build/makefile only adds cs_stub_devmemd.c to the sources when DEVMEMD=1, and that should cause the translation unit to be non-empty. It might be better if cs_stub_devmemd.c had an #error if compiled without DEVMEMD=1 rather than just being empty.

DEVMEMD=1 triggers some more compiler warnings, so I'll fix those.

odin- commented 3 months ago

Ah great. I've wrapped CSAL in our own bare metal test environment so I just included all source code files. I've removed cs_stub_devmemd and the warning was silenced. Thanks.

odin- commented 3 months ago

You can close this issue as resolved.

algrant-arm commented 3 months ago

Thanks. I'll see if we can make it so it is possible to just compile source/*.c and have it go through without warnings.

I've just pushed another change that fixes some warnings specific to DEVMEMD=1.