SD card libblock bdpart linker problem

Andre Marques andre.lousa.marques at gmail.com
Mon Apr 28 18:56:57 UTC 2014


Hello,

I am currently working on an emmc driver for the Raspberry Pi, and I am 
trying to mount the SD card using libblock on RTEMS GIT HEAD.

To mount the SD card I am doing:

1. rtems_io_register_driver (by calling my driver with 
CONFIGURE_APPLICATION_EXTRA_DRIVERS on hello sample)

2. rtems_filesystem_make_dev_t to get the device file

3.  rtems_disk_io_initialize

4. rtems_disk_create_phys

Up until this point everything seems good.

Next I try to read the SD card partition table with 
rtems_bdpart_register_from_disk, and for that I add an include for 
rtems/bdpart.h

When I hit compile, the result seems to point at a linker problem 
(conflict with dummy.o):

(..)
Making all in hello
gmake[6]: Entering directory 
`/home/bison/RTEMS/arm/raspberry_pi/b-rtems4.11/arm-rtems4.11/c/raspberrypi/testsuites/samples/hello'
arm-rtems4.11-gcc -B../../../../../raspberrypi/lib/ -specs bsp_specs 
-qrtems -DHAVE_CONFIG_H -I. 
-I/home/bison/RTEMS/code/c/src/../../testsuites/samples/hello -I..     
-mcpu=arm1176jzf-s -O2 -g -Wall -Wmissing-prototypes 
-Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -MT 
init.o -MD -MP -MF .deps/init.Tpo -c -o init.o 
/home/bison/RTEMS/code/c/src/../../testsuites/samples/hello/init.c
mv -f .deps/init.Tpo .deps/init.Po
arm-rtems4.11-gcc -B../../../../../raspberrypi/lib/ -specs bsp_specs 
-qrtems -mcpu=arm1176jzf-s -O2 -g -Wall -Wmissing-prototypes 
-Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs    
-mcpu=arm1176jzf-s   -o hello.exe init.o
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o): In function 
`_Thread_Idle_body':
/home/bison/RTEMS/arm/raspberry_pi/b-rtems4.11/arm-rtems4.11/c/raspberrypi/cpukit/libmisc/../../cpukit/../../../raspberrypi/lib/include/rtems/confdefs.h:849: 
multiple definition of `_Thread_Idle_body'
init.o:/home/bison/RTEMS/arm/raspberry_pi/b-rtems4.11/arm-rtems4.11/c/raspberrypi/testsuites/samples/hello/../../../../../raspberrypi/lib/include/rtems/confdefs.h:849: 
first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o): In function 
`_Thread_Get_executing':
/home/bison/RTEMS/arm/raspberry_pi/b-rtems4.11/arm-rtems4.11/c/raspberrypi/cpukit/libmisc/../../cpukit/../../../raspberrypi/lib/include/rtems/score/thread.h:632: 
multiple definition of `__getreent'
init.o:/home/bison/RTEMS/arm/raspberry_pi/b-rtems4.11/arm-rtems4.11/c/raspberrypi/testsuites/samples/hello/../../../../../raspberrypi/lib/include/rtems/score/thread.h:632: 
first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o): In function 
`_Thread_Idle_body':
/home/bison/RTEMS/arm/raspberry_pi/b-rtems4.11/arm-rtems4.11/c/raspberrypi/cpukit/libmisc/../../cpukit/../../../raspberrypi/lib/include/rtems/confdefs.h:849: 
multiple definition of `_POSIX_Threads_Initialize_user_threads_p'
init.o:/home/bison/RTEMS/arm/raspberry_pi/b-rtems4.11/arm-rtems4.11/c/raspberrypi/testsuites/samples/hello/../../../../../raspberrypi/lib/include/rtems/confdefs.h:849: 
first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.data+0x0): 
multiple definition of `_RTEMS_tasks_Initialize_user_tasks_p'
init.o:(.data+0x0): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.rodata+0x0): 
multiple definition of `Configuration'
init.o:(.rodata+0x0): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.data+0x4): 
multiple definition of `rtems_maximum_priority'
init.o:(.data+0x4): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.data+0x8): 
multiple definition of `rtems_minimum_stack_size'
init.o:(.data+0x8): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o): In function 
`_Thread_Get_executing':
/home/bison/RTEMS/arm/raspberry_pi/b-rtems4.11/arm-rtems4.11/c/raspberrypi/cpukit/libmisc/../../cpukit/../../../raspberrypi/lib/include/rtems/score/thread.h:632: 
multiple definition of `Configuration_POSIX_API'
init.o:/home/bison/RTEMS/arm/raspberry_pi/b-rtems4.11/arm-rtems4.11/c/raspberrypi/testsuites/samples/hello/../../../../../raspberrypi/lib/include/rtems/test.h:73: 
first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.data+0xc): 
multiple definition of `Configuration_RTEMS_API'
init.o:(.data+0xc): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.data+0x3c): 
multiple definition of `Device_drivers'
init.o:(.data+0x3c): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.data+0x6c): 
multiple definition of `Initialization_tasks'
init.o:(.data+0x6c): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.bss+0x38): 
multiple definition of `rtems_malloc_dirty_helper'
init.o:/home/bison/RTEMS/code/c/src/../../testsuites/samples/hello/init.c:47: 
first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.rodata+0x74): 
multiple definition of `rtems_malloc_extend_handler'
init.o:(.rodata+0xc8): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.bss+0x3c): 
multiple definition of `rtems_malloc_statistics_helpers'
init.o:/home/bison/RTEMS/arm/raspberry_pi/b-rtems4.11/arm-rtems4.11/c/raspberrypi/testsuites/samples/hello/../../../../../raspberrypi/lib/include/rtems/score/thread.h:632: 
first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.data+0x88): 
multiple definition of `RTEMS_Malloc_Heap'
init.o:(.data+0x88): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.rodata+0x78): 
multiple definition of `_Scheduler_FIXME_thread_priority_queues_are_broken'
init.o:(.rodata+0xcc): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.data+0x8c): 
multiple definition of `_Scheduler'
init.o:(.data+0x8c): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.rodata+0x7c): 
multiple definition of `rtems_filesystem_root_configuration'
init.o:(.rodata+0xd0): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.rodata+0x90): 
multiple definition of `rtems_filesystem_table'
init.o:(.rodata+0xec): first defined here
/home/bison/RTEMS/arm/tools/rtems-4.11_arm/lib/gcc/arm-rtems4.11/4.8.2/../../../../arm-rtems4.11/bin/ld: 
Warning: size of symbol `rtems_filesystem_table' changed from 24 in 
init.o to 16 in ../../../../../raspberrypi/lib/librtemscpu.a(dummy.o)
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.bss+0x40): 
multiple definition of `rtems_telnetd_maximum_ptys'
init.o:(.bss+0x90): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.data+0xd0): 
multiple definition of `rtems_libio_number_iops'
init.o:(.data+0xcc): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.rodata+0xa0): 
multiple definition of `rtems_fs_init_helper'
init.o:(.rodata+0x104): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.rodata+0xa4): 
multiple definition of `rtems_libio_exit_helper'
init.o:(.rodata+0x108): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.rodata+0xa8): 
multiple definition of `rtems_libio_post_driver_helper'
init.o:(.rodata+0x10c): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.rodata+0xac): 
multiple definition of `rtems_libio_init_helper'
init.o:(.rodata+0x110): first defined here
../../../../../raspberrypi/lib/librtemscpu.a(dummy.o):(.data+0x7c): 
undefined reference to `main'
collect2: error: ld returned 1 exit status
(..)

Any clue of what may be the problem?

--André Marques.




More information about the devel mailing list