diff mbox series

[U-Boot,01/15] sandbox: Unprotect DATA regions in bus tests

Message ID 20180923224727.204542-2-sjg@chromium.org
State Superseded
Delegated to: Simon Glass
Headers show
Series test: Various test refinements and improvements | expand

Commit Message

Simon Glass Sept. 23, 2018, 10:47 p.m. UTC
On my Ubuntu 18.04.1 machine two driver-model bus tests have started
failing recently. The problem appears to be that the DATA region of the
executable is protected. This does not seem correct, but perhaps there
is a reason.

To work around it, unprotect the regions in these tests before accessing
them.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 arch/sandbox/cpu/os.c | 11 +++++++++++
 include/os.h          | 11 +++++++++++
 test/dm/bus.c         | 12 ++++++++++++
 3 files changed, 34 insertions(+)

Comments

Alexander Graf Sept. 24, 2018, 6:34 a.m. UTC | #1
On 24.09.18 00:47, Simon Glass wrote:
> On my Ubuntu 18.04.1 machine two driver-model bus tests have started
> failing recently. The problem appears to be that the DATA region of the

Are you sure it's .data and not .rodata?

The linker script should really put all those lists into its own
section, so I'm not sure how you end up with them getting write
protected. Can you please run

  $ objdump -h u-boot

on your broken binary? Also do

  $ nm u-boot | grep .u_boot_list

so we can correlate whether the symbols ended up in the correct section.


Thanks,

Alex
Simon Glass Sept. 29, 2018, 6:29 p.m. UTC | #2
Hi Alex,

On 23 September 2018 at 23:34, Alexander Graf <agraf@suse.de> wrote:
>
>
> On 24.09.18 00:47, Simon Glass wrote:
>> On my Ubuntu 18.04.1 machine two driver-model bus tests have started
>> failing recently. The problem appears to be that the DATA region of the
>
> Are you sure it's .data and not .rodata?
>
> The linker script should really put all those lists into its own
> section, so I'm not sure how you end up with them getting write
> protected. Can you please run

It doesn't happen on my normal computer, but I upgraded one to Ubuntu
18.04 and noticed this. It's a bit odd, but I wonder if it is deciding
that the section name means it is rodata?

>
>   $ objdump -h u-boot
>
> on your broken binary? Also do
>
>   $ nm u-boot | grep .u_boot_list
>
> so we can correlate whether the symbols ended up in the correct section.

Yes, please see below.

/tmp/b/sandbox/u-boot:     file format elf64-x86-64

Sections:
Idx Name          Size      VMA               LMA               File off  Algn
  0 .interp       0000001c  0000000000000238  0000000000000238  00000238  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  1 .note.ABI-tag 00000020  0000000000000254  0000000000000254  00000254  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  2 .note.gnu.build-id 00000024  0000000000000274  0000000000000274
00000274  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  3 .gnu.hash     00000284  0000000000000298  0000000000000298  00000298  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  4 .dynsym       00000d50  0000000000000520  0000000000000520  00000520  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  5 .dynstr       00000558  0000000000001270  0000000000001270  00001270  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  6 .gnu.version  0000011c  00000000000017c8  00000000000017c8  000017c8  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  7 .gnu.version_r 00000040  00000000000018e8  00000000000018e8  000018e8  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  8 .rela.dyn     0001bca8  0000000000001928  0000000000001928  00001928  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  9 .rela.plt     00000558  000000000001d5d0  000000000001d5d0  0001d5d0  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
 10 .init         00000017  000000000001db28  000000000001db28  0001db28  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 11 .plt          000003a0  000000000001db40  000000000001db40  0001db40  2**4
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 12 .plt.got      00000008  000000000001dee0  000000000001dee0  0001dee0  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 13 .text         000b6ce0  000000000001def0  000000000001def0  0001def0  2**4
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 14 .fini         00000009  00000000000d4bd0  00000000000d4bd0  000d4bd0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 15 .rodata       0005b6d3  00000000000d4be0  00000000000d4be0  000d4be0  2**5
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
 16 .dtb.init.rodata 000007c0  00000000001302c0  00000000001302c0
001302c0  2**4
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
 17 .eh_frame_hdr 0000829c  0000000000130a80  0000000000130a80  00130a80  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
 18 .eh_frame     0002dc70  0000000000138d20  0000000000138d20  00138d20  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
 19 .init_array   00000008  0000000000367010  0000000000367010  00167010  2**3
                  CONTENTS, ALLOC, LOAD, DATA
 20 .fini_array   00000008  0000000000367018  0000000000367018  00167018  2**3
                  CONTENTS, ALLOC, LOAD, DATA
 21 .data.rel.ro  00005180  0000000000367020  0000000000367020  00167020  2**5
                  CONTENTS, ALLOC, LOAD, DATA
 22 .dynamic      00000210  000000000036c1a0  000000000036c1a0  0016c1a0  2**3
                  CONTENTS, ALLOC, LOAD, DATA
 23 .got          00000288  000000000036c3b0  000000000036c3b0  0016c3b0  2**3
                  CONTENTS, ALLOC, LOAD, DATA
 24 .u_boot_list  00009938  000000000036c638  000000000036c638  0016c638  2**2
                  CONTENTS, ALLOC, LOAD, DATA
 25 _u_boot_sandbox_getopt 00000088  0000000000375f70
0000000000375f70  00175f70  2**3
                  CONTENTS, ALLOC, LOAD, DATA
 26 .data         0000bd98  0000000000376000  0000000000376000  00176000  2**5
                  CONTENTS, ALLOC, LOAD, DATA
 27 .bss          00037450  0000000000381da0  0000000000381da0  00181d98  2**5
                  ALLOC
 28 .comment      00000024  0000000000000000  0000000000000000  00181d98  2**0
                  CONTENTS, READONLY
 29 .debug_aranges 000062a0  0000000000000000  0000000000000000  00181dbc  2**0
                  CONTENTS, READONLY, DEBUGGING
 30 .debug_info   00436065  0000000000000000  0000000000000000  0018805c  2**0
                  CONTENTS, READONLY, DEBUGGING
 31 .debug_abbrev 00076d60  0000000000000000  0000000000000000  005be0c1  2**0
                  CONTENTS, READONLY, DEBUGGING
 32 .debug_line   000a86c5  0000000000000000  0000000000000000  00634e21  2**0
                  CONTENTS, READONLY, DEBUGGING
 33 .debug_str    00040cf2  0000000000000000  0000000000000000  006dd4e6  2**0
                  CONTENTS, READONLY, DEBUGGING
 34 .debug_loc    001c0e13  0000000000000000  0000000000000000  0071e1d8  2**0
                  CONTENTS, READONLY, DEBUGGING
 35 .debug_ranges 0001b290  0000000000000000  0000000000000000  008defeb  2**0
                  CONTENTS, READONLY, DEBUGGING
000000000036c638 D _u_boot_list_2_cmd_2_askenv
000000000036c668 D _u_boot_list_2_cmd_2_axi
000000000036c698 D _u_boot_list_2_cmd_2_base
000000000036c6c8 D _u_boot_list_2_cmd_2_bdinfo
000000000036c6f8 D _u_boot_list_2_cmd_2_bind
000000000036c728 D _u_boot_list_2_cmd_2_blkcache
000000000036c758 D _u_boot_list_2_cmd_2_bmp
000000000036c788 D _u_boot_list_2_cmd_2_boot
000000000036c7b8 D _u_boot_list_2_cmd_2_bootd
000000000036c7e8 D _u_boot_list_2_cmd_2_bootefi
000000000036c818 D _u_boot_list_2_cmd_2_bootm
000000000036c848 D _u_boot_list_2_cmd_2_bootp
000000000036c878 D _u_boot_list_2_cmd_2_bootstage
000000000036c8a8 D _u_boot_list_2_cmd_2_bootz
000000000036c8d8 D _u_boot_list_2_cmd_2_btrsubvol
000000000036c908 D _u_boot_list_2_cmd_2_cbfsinfo
000000000036c938 D _u_boot_list_2_cmd_2_cbfsinit
000000000036c968 D _u_boot_list_2_cmd_2_cbfsload
000000000036c998 D _u_boot_list_2_cmd_2_cbfsls
000000000036c9c8 D _u_boot_list_2_cmd_2_cdp
000000000036c9f8 D _u_boot_list_2_cmd_2_chpart
000000000036ca28 D _u_boot_list_2_cmd_2_cmp
000000000036ca58 D _u_boot_list_2_cmd_2_config
000000000036ca88 D _u_boot_list_2_cmd_2_coninfo
000000000036cab8 D _u_boot_list_2_cmd_2_cp
000000000036cae8 D _u_boot_list_2_cmd_2_cpu
000000000036cb18 D _u_boot_list_2_cmd_2_cramfsload
000000000036cb48 D _u_boot_list_2_cmd_2_cramfsls
000000000036cb78 D _u_boot_list_2_cmd_2_crc32
000000000036cba8 D _u_boot_list_2_cmd_2_crosec
000000000036cbd8 D _u_boot_list_2_cmd_2_date
000000000036cc08 D _u_boot_list_2_cmd_2_demo
000000000036cc38 D _u_boot_list_2_cmd_2_dhcp
000000000036cc68 D _u_boot_list_2_cmd_2_dhry
000000000036cc98 D _u_boot_list_2_cmd_2_diskboot
000000000036ccc8 D _u_boot_list_2_cmd_2_dm
000000000036ccf8 D _u_boot_list_2_cmd_2_dns
000000000036cd28 D _u_boot_list_2_cmd_2_echo
000000000036cd58 D _u_boot_list_2_cmd_2_editenv
000000000036cd88 D _u_boot_list_2_cmd_2_env
000000000036cdb8 D _u_boot_list_2_cmd_2_erase
000000000036cde8 D _u_boot_list_2_cmd_2_ethsw
000000000036ce18 D _u_boot_list_2_cmd_2_exit
000000000036ce48 D _u_boot_list_2_cmd_2_ext2load
000000000036ce78 D _u_boot_list_2_cmd_2_ext2ls
000000000036cea8 D _u_boot_list_2_cmd_2_ext4load
000000000036ced8 D _u_boot_list_2_cmd_2_ext4ls
000000000036cf08 D _u_boot_list_2_cmd_2_ext4size
000000000036cf38 D _u_boot_list_2_cmd_2_ext4write
000000000036cf68 D _u_boot_list_2_cmd_2_false
000000000036cf98 D _u_boot_list_2_cmd_2_fatinfo
000000000036cfc8 D _u_boot_list_2_cmd_2_fatload
000000000036cff8 D _u_boot_list_2_cmd_2_fatls
000000000036d028 D _u_boot_list_2_cmd_2_fatmkdir
000000000036d058 D _u_boot_list_2_cmd_2_fatrm
000000000036d088 D _u_boot_list_2_cmd_2_fatsize
000000000036d0b8 D _u_boot_list_2_cmd_2_fatwrite
000000000036d0e8 D _u_boot_list_2_cmd_2_fdt
000000000036d118 D _u_boot_list_2_cmd_2_flinfo
000000000036d148 D _u_boot_list_2_cmd_2_fstype
000000000036d178 D _u_boot_list_2_cmd_2_gettime
000000000036d1a8 D _u_boot_list_2_cmd_2_go
000000000036d1d8 D _u_boot_list_2_cmd_2_gpio
000000000036d208 D _u_boot_list_2_cmd_2_gpt
000000000036d238 D _u_boot_list_2_cmd_2_grepenv
000000000036d268 D _u_boot_list_2_cmd_2_hash
000000000036d298 D _u_boot_list_2_cmd_2_help
000000000036d2c8 D _u_boot_list_2_cmd_2_host
000000000036d2f8 D _u_boot_list_2_cmd_2_i2c
000000000036d328 D _u_boot_list_2_cmd_2_ide
000000000036d358 D _u_boot_list_2_cmd_2_iminfo
000000000036d388 D _u_boot_list_2_cmd_2_imxtract
000000000036d3b8 D _u_boot_list_2_cmd_2_iod
000000000036d3e8 D _u_boot_list_2_cmd_2_iotrace
000000000036d418 D _u_boot_list_2_cmd_2_iow
000000000036d448 D _u_boot_list_2_cmd_2_itest
000000000036d478 D _u_boot_list_2_cmd_2_lcdputs
000000000036d4a8 D _u_boot_list_2_cmd_2_led
000000000036d4d8 D _u_boot_list_2_cmd_2_license
000000000036d508 D _u_boot_list_2_cmd_2_linklocal
000000000036d538 D _u_boot_list_2_cmd_2_load
000000000036d568 D _u_boot_list_2_cmd_2_loadb
000000000036d598 D _u_boot_list_2_cmd_2_loads
000000000036d5c8 D _u_boot_list_2_cmd_2_loadx
000000000036d5f8 D _u_boot_list_2_cmd_2_loady
000000000036d628 D _u_boot_list_2_cmd_2_log
000000000036d658 D _u_boot_list_2_cmd_2_loop
000000000036d688 D _u_boot_list_2_cmd_2_loopw
000000000036d6b8 D _u_boot_list_2_cmd_2_ls
000000000036d6e8 D _u_boot_list_2_cmd_2_lzmadec
000000000036d718 D _u_boot_list_2_cmd_2_md
000000000036d748 D _u_boot_list_2_cmd_2_md5sum
000000000036d778 D _u_boot_list_2_cmd_2_meminfo
000000000036d7a8 D _u_boot_list_2_cmd_2_mii
000000000036d7d8 D _u_boot_list_2_cmd_2_mm
000000000036d808 D _u_boot_list_2_cmd_2_mtdparts
000000000036d838 D _u_boot_list_2_cmd_2_mtest
000000000036d868 D _u_boot_list_2_cmd_2_mw
000000000036d898 D _u_boot_list_2_cmd_2_nfs
000000000036d8c8 D _u_boot_list_2_cmd_2_nm
000000000036d8f8 D _u_boot_list_2_cmd_2_nvme
000000000036d928 D _u_boot_list_2_cmd_2_part
000000000036d958 D _u_boot_list_2_cmd_2_pci
000000000036d988 D _u_boot_list_2_cmd_2_ping
000000000036d9b8 D _u_boot_list_2_cmd_2_pmic
000000000036d9e8 D _u_boot_list_2_cmd_2_printenv
000000000036da18 D _u_boot_list_2_cmd_2_protect
000000000036da48 D _u_boot_list_2_cmd_2_pxe
000000000036da78 D _u_boot_list_2_cmd_2_qfw
000000000036daa8 D _u_boot_list_2_cmd_2_question_mark
000000000036dad8 D _u_boot_list_2_cmd_2_rarpboot
000000000036db08 D _u_boot_list_2_cmd_2_read
000000000036db38 D _u_boot_list_2_cmd_2_regulator
000000000036db68 D _u_boot_list_2_cmd_2_reset
000000000036db98 D _u_boot_list_2_cmd_2_rproc
000000000036dbc8 D _u_boot_list_2_cmd_2_run
000000000036dbf8 D _u_boot_list_2_cmd_2_sata
000000000036dc28 D _u_boot_list_2_cmd_2_save
000000000036dc58 D _u_boot_list_2_cmd_2_sb
000000000036dc88 D _u_boot_list_2_cmd_2_scsi
000000000036dcb8 D _u_boot_list_2_cmd_2_scsiboot
000000000036dce8 D _u_boot_list_2_cmd_2_setcurs
000000000036dd18 D _u_boot_list_2_cmd_2_setenv
000000000036dd48 D _u_boot_list_2_cmd_2_setexpr
000000000036dd78 D _u_boot_list_2_cmd_2_sf
000000000036dda8 D _u_boot_list_2_cmd_2_showvar
000000000036ddd8 D _u_boot_list_2_cmd_2_size
000000000036de08 D _u_boot_list_2_cmd_2_sleep
000000000036de38 D _u_boot_list_2_cmd_2_sntp
000000000036de68 D _u_boot_list_2_cmd_2_sound
000000000036de98 D _u_boot_list_2_cmd_2_source
000000000036dec8 D _u_boot_list_2_cmd_2_sspi
000000000036def8 D _u_boot_list_2_cmd_2_sysboot
000000000036df28 D _u_boot_list_2_cmd_2_test
000000000036df58 D _u_boot_list_2_cmd_2_tftpboot
000000000036df88 D _u_boot_list_2_cmd_2_tftpput
000000000036dfb8 D _u_boot_list_2_cmd_2_tftpsrv
000000000036dfe8 D _u_boot_list_2_cmd_2_time
000000000036e018 D _u_boot_list_2_cmd_2_timer
000000000036e048 D _u_boot_list_2_cmd_2_tpm
000000000036e078 D _u_boot_list_2_cmd_2_tpm2
000000000036e0a8 D _u_boot_list_2_cmd_2_tpmtest
000000000036e0d8 D _u_boot_list_2_cmd_2_true
000000000036e108 D _u_boot_list_2_cmd_2_unbind
000000000036e138 D _u_boot_list_2_cmd_2_usb
000000000036e168 D _u_boot_list_2_cmd_2_usbboot
000000000036e198 D _u_boot_list_2_cmd_2_ut
000000000036e1c8 D _u_boot_list_2_cmd_2_ut_cmd
000000000036e1f8 D _u_boot_list_2_cmd_2_ut_print
000000000036e228 D _u_boot_list_2_cmd_2_version
000000000036e258 D
_u_boot_list_2_compression_test_2_compression_test_bootm_bzip2
000000000036e278 D _u_boot_list_2_compression_test_2_compression_test_bootm_gzip
000000000036e298 D _u_boot_list_2_compression_test_2_compression_test_bootm_lz4
000000000036e2b8 D _u_boot_list_2_compression_test_2_compression_test_bootm_lzma
000000000036e2d8 D _u_boot_list_2_compression_test_2_compression_test_bootm_lzo
000000000036e2f8 D _u_boot_list_2_compression_test_2_compression_test_bootm_none
000000000036e318 D _u_boot_list_2_compression_test_2_compression_test_bzip2
000000000036e338 D _u_boot_list_2_compression_test_2_compression_test_gzip
000000000036e358 D _u_boot_list_2_compression_test_2_compression_test_lz4
000000000036e378 D _u_boot_list_2_compression_test_2_compression_test_lzma
000000000036e398 D _u_boot_list_2_compression_test_2_compression_test_lzo
000000000036e3b8 D _u_boot_list_2_dm_test_2_dm_test_adc_bind
000000000036e3d8 D _u_boot_list_2_dm_test_2_dm_test_adc_multi_channel_conversion
000000000036e3f8 D _u_boot_list_2_dm_test_2_dm_test_adc_multi_channel_shot
000000000036e418 D
_u_boot_list_2_dm_test_2_dm_test_adc_single_channel_conversion
000000000036e438 D _u_boot_list_2_dm_test_2_dm_test_adc_single_channel_shot
000000000036e458 D _u_boot_list_2_dm_test_2_dm_test_adc_supply
000000000036e478 D _u_boot_list_2_dm_test_2_dm_test_adc_wrong_channel_selection
000000000036e498 D _u_boot_list_2_dm_test_2_dm_test_autobind
000000000036e4b8 D _u_boot_list_2_dm_test_2_dm_test_autobind_uclass_pdata_alloc
000000000036e4d8 D _u_boot_list_2_dm_test_2_dm_test_autobind_uclass_pdata_valid
000000000036e4f8 D _u_boot_list_2_dm_test_2_dm_test_autoprobe
000000000036e518 D _u_boot_list_2_dm_test_2_dm_test_axi_base
000000000036e538 D _u_boot_list_2_dm_test_2_dm_test_axi_busnum
000000000036e558 D _u_boot_list_2_dm_test_2_dm_test_axi_store
000000000036e578 D _u_boot_list_2_dm_test_2_dm_test_blk_base
000000000036e598 D _u_boot_list_2_dm_test_2_dm_test_blk_devnum
000000000036e5b8 D _u_boot_list_2_dm_test_2_dm_test_blk_find
000000000036e5d8 D _u_boot_list_2_dm_test_2_dm_test_blk_get_from_parent
000000000036e5f8 D _u_boot_list_2_dm_test_2_dm_test_blk_usb
000000000036e618 D _u_boot_list_2_dm_test_2_dm_test_board
000000000036e638 D _u_boot_list_2_dm_test_2_dm_test_bus_child_post_bind
000000000036e658 D _u_boot_list_2_dm_test_2_dm_test_bus_child_post_bind_uclass
000000000036e678 D _u_boot_list_2_dm_test_2_dm_test_bus_child_pre_probe_uclass
000000000036e698 D _u_boot_list_2_dm_test_2_dm_test_bus_children
000000000036e6b8 D _u_boot_list_2_dm_test_2_dm_test_bus_children_funcs
000000000036e6d8 D _u_boot_list_2_dm_test_2_dm_test_bus_children_iterators
000000000036e6f8 D _u_boot_list_2_dm_test_2_dm_test_bus_children_of_offset
000000000036e718 D _u_boot_list_2_dm_test_2_dm_test_bus_parent_data
000000000036e738 D _u_boot_list_2_dm_test_2_dm_test_bus_parent_data_uclass
000000000036e758 D _u_boot_list_2_dm_test_2_dm_test_bus_parent_ops
000000000036e778 D _u_boot_list_2_dm_test_2_dm_test_bus_parent_platdata
000000000036e798 D _u_boot_list_2_dm_test_2_dm_test_bus_parent_platdata_uclass
000000000036e7b8 D _u_boot_list_2_dm_test_2_dm_test_children
000000000036e7d8 D _u_boot_list_2_dm_test_2_dm_test_clk
000000000036e7f8 D _u_boot_list_2_dm_test_2_dm_test_clk_bulk
000000000036e818 D _u_boot_list_2_dm_test_2_dm_test_cpu
000000000036e838 D _u_boot_list_2_dm_test_2_dm_test_device_get_uclass_id
000000000036e858 D _u_boot_list_2_dm_test_2_dm_test_eth
000000000036e878 D _u_boot_list_2_dm_test_2_dm_test_eth_act
000000000036e898 D _u_boot_list_2_dm_test_2_dm_test_eth_alias
000000000036e8b8 D _u_boot_list_2_dm_test_2_dm_test_eth_prime
000000000036e8d8 D _u_boot_list_2_dm_test_2_dm_test_eth_rotate
000000000036e8f8 D _u_boot_list_2_dm_test_2_dm_test_fdt
000000000036e918 D _u_boot_list_2_dm_test_2_dm_test_fdt_disable_enable_by_path
000000000036e938 D _u_boot_list_2_dm_test_2_dm_test_fdt_livetree_writing
000000000036e958 D _u_boot_list_2_dm_test_2_dm_test_fdt_offset
000000000036e978 D _u_boot_list_2_dm_test_2_dm_test_fdt_pre_reloc
000000000036e998 D _u_boot_list_2_dm_test_2_dm_test_fdt_remap_addr_flat
000000000036e9b8 D _u_boot_list_2_dm_test_2_dm_test_fdt_remap_addr_live
000000000036e9d8 D _u_boot_list_2_dm_test_2_dm_test_fdt_translation
000000000036e9f8 D _u_boot_list_2_dm_test_2_dm_test_fdt_uclass_seq
000000000036ea18 D _u_boot_list_2_dm_test_2_dm_test_firmware_probe
000000000036ea38 D _u_boot_list_2_dm_test_2_dm_test_first_next_device
000000000036ea58 D _u_boot_list_2_dm_test_2_dm_test_first_next_ok_device
000000000036ea78 D _u_boot_list_2_dm_test_2_dm_test_gpio
000000000036ea98 D _u_boot_list_2_dm_test_2_dm_test_gpio_anon
000000000036eab8 D _u_boot_list_2_dm_test_2_dm_test_gpio_copy
000000000036ead8 D _u_boot_list_2_dm_test_2_dm_test_gpio_leak
000000000036eaf8 D _u_boot_list_2_dm_test_2_dm_test_gpio_phandles
000000000036eb18 D _u_boot_list_2_dm_test_2_dm_test_gpio_requestf
000000000036eb38 D _u_boot_list_2_dm_test_2_dm_test_i2c_bytewise
000000000036eb58 D _u_boot_list_2_dm_test_2_dm_test_i2c_find
000000000036eb78 D _u_boot_list_2_dm_test_2_dm_test_i2c_offset
000000000036eb98 D _u_boot_list_2_dm_test_2_dm_test_i2c_offset_len
000000000036ebb8 D _u_boot_list_2_dm_test_2_dm_test_i2c_probe_empty
000000000036ebd8 D _u_boot_list_2_dm_test_2_dm_test_i2c_read_write
000000000036ebf8 D _u_boot_list_2_dm_test_2_dm_test_i2c_speed
000000000036ec18 D _u_boot_list_2_dm_test_2_dm_test_leak
000000000036ec38 D _u_boot_list_2_dm_test_2_dm_test_led_base
000000000036ec58 D _u_boot_list_2_dm_test_2_dm_test_led_blink
000000000036ec78 D _u_boot_list_2_dm_test_2_dm_test_led_default_state
000000000036ec98 D _u_boot_list_2_dm_test_2_dm_test_led_gpio
000000000036ecb8 D _u_boot_list_2_dm_test_2_dm_test_led_label
000000000036ecd8 D _u_boot_list_2_dm_test_2_dm_test_led_toggle
000000000036ecf8 D _u_boot_list_2_dm_test_2_dm_test_lifecycle
000000000036ed18 D _u_boot_list_2_dm_test_2_dm_test_mailbox
000000000036ed38 D _u_boot_list_2_dm_test_2_dm_test_misc
000000000036ed58 D _u_boot_list_2_dm_test_2_dm_test_mmc_base
000000000036ed78 D _u_boot_list_2_dm_test_2_dm_test_mmc_blk
000000000036ed98 D _u_boot_list_2_dm_test_2_dm_test_net_retry
000000000036edb8 D _u_boot_list_2_dm_test_2_dm_test_ofnode_by_prop_value
000000000036edd8 D _u_boot_list_2_dm_test_2_dm_test_ofnode_compatible
000000000036edf8 D _u_boot_list_2_dm_test_2_dm_test_operations
000000000036ee18 D _u_boot_list_2_dm_test_2_dm_test_ordering
000000000036ee38 D _u_boot_list_2_dm_test_2_dm_test_pci_base
000000000036ee58 D _u_boot_list_2_dm_test_2_dm_test_pci_busdev
000000000036ee78 D _u_boot_list_2_dm_test_2_dm_test_pci_cap
000000000036ee98 D _u_boot_list_2_dm_test_2_dm_test_pci_drvdata
000000000036eeb8 D _u_boot_list_2_dm_test_2_dm_test_pci_mixed
000000000036eed8 D _u_boot_list_2_dm_test_2_dm_test_pci_swapcase
000000000036eef8 D _u_boot_list_2_dm_test_2_dm_test_phy_base
000000000036ef18 D _u_boot_list_2_dm_test_2_dm_test_phy_ops
000000000036ef38 D _u_boot_list_2_dm_test_2_dm_test_platdata
000000000036ef58 D _u_boot_list_2_dm_test_2_dm_test_power_domain
000000000036ef78 D _u_boot_list_2_dm_test_2_dm_test_power_pmic_get
000000000036ef98 D _u_boot_list_2_dm_test_2_dm_test_power_pmic_io
000000000036efb8 D _u_boot_list_2_dm_test_2_dm_test_power_pmic_mc34708_get
000000000036efd8 D
_u_boot_list_2_dm_test_2_dm_test_power_pmic_mc34708_regs_check
000000000036eff8 D _u_boot_list_2_dm_test_2_dm_test_power_pmic_mc34708_rw_val
000000000036f018 D _u_boot_list_2_dm_test_2_dm_test_power_regulator_autoset
000000000036f038 D _u_boot_list_2_dm_test_2_dm_test_power_regulator_autoset_list
000000000036f058 D _u_boot_list_2_dm_test_2_dm_test_power_regulator_get
000000000036f078 D
_u_boot_list_2_dm_test_2_dm_test_power_regulator_set_get_current
000000000036f098 D
_u_boot_list_2_dm_test_2_dm_test_power_regulator_set_get_enable
000000000036f0b8 D _u_boot_list_2_dm_test_2_dm_test_power_regulator_set_get_mode
000000000036f0d8 D
_u_boot_list_2_dm_test_2_dm_test_power_regulator_set_get_voltage
000000000036f0f8 D _u_boot_list_2_dm_test_2_dm_test_pre_reloc
000000000036f118 D _u_boot_list_2_dm_test_2_dm_test_pwm_base
000000000036f138 D _u_boot_list_2_dm_test_2_dm_test_ram_base
000000000036f158 D _u_boot_list_2_dm_test_2_dm_test_regmap_base
000000000036f178 D _u_boot_list_2_dm_test_2_dm_test_regmap_rw
000000000036f198 D _u_boot_list_2_dm_test_2_dm_test_regmap_syscon
000000000036f1b8 D _u_boot_list_2_dm_test_2_dm_test_remoteproc_base
000000000036f1d8 D _u_boot_list_2_dm_test_2_dm_test_remove
000000000036f1f8 D _u_boot_list_2_dm_test_2_dm_test_remove_active_dma
000000000036f218 D _u_boot_list_2_dm_test_2_dm_test_reset
000000000036f238 D _u_boot_list_2_dm_test_2_dm_test_reset_bulk
000000000036f258 D _u_boot_list_2_dm_test_2_dm_test_rtc_base
000000000036f278 D _u_boot_list_2_dm_test_2_dm_test_rtc_dual
000000000036f298 D _u_boot_list_2_dm_test_2_dm_test_rtc_reset
000000000036f2b8 D _u_boot_list_2_dm_test_2_dm_test_rtc_set_get
000000000036f2d8 D _u_boot_list_2_dm_test_2_dm_test_serial
000000000036f2f8 D _u_boot_list_2_dm_test_2_dm_test_smem_base
000000000036f318 D _u_boot_list_2_dm_test_2_dm_test_spi_find
000000000036f338 D _u_boot_list_2_dm_test_2_dm_test_spi_flash
000000000036f358 D _u_boot_list_2_dm_test_2_dm_test_spi_xfer
000000000036f378 D _u_boot_list_2_dm_test_2_dm_test_spmi_access
000000000036f398 D _u_boot_list_2_dm_test_2_dm_test_spmi_access_peripheral
000000000036f3b8 D _u_boot_list_2_dm_test_2_dm_test_spmi_probe
000000000036f3d8 D _u_boot_list_2_dm_test_2_dm_test_syscon_base
000000000036f3f8 D _u_boot_list_2_dm_test_2_dm_test_syscon_by_driver_data
000000000036f418 D _u_boot_list_2_dm_test_2_dm_test_sysreset_base
000000000036f438 D _u_boot_list_2_dm_test_2_dm_test_sysreset_get_status
000000000036f458 D _u_boot_list_2_dm_test_2_dm_test_sysreset_walk
000000000036f478 D _u_boot_list_2_dm_test_2_dm_test_timer_base
000000000036f498 D _u_boot_list_2_dm_test_2_dm_test_uclass
000000000036f4b8 D _u_boot_list_2_dm_test_2_dm_test_uclass_before_ready
000000000036f4d8 D _u_boot_list_2_dm_test_2_dm_test_uclass_devices_find
000000000036f4f8 D _u_boot_list_2_dm_test_2_dm_test_uclass_devices_find_by_name
000000000036f518 D _u_boot_list_2_dm_test_2_dm_test_uclass_devices_get
000000000036f538 D _u_boot_list_2_dm_test_2_dm_test_uclass_devices_get_by_name
000000000036f558 D _u_boot_list_2_dm_test_2_dm_test_uclass_names
000000000036f578 D _u_boot_list_2_dm_test_2_dm_test_usb_base
000000000036f598 D _u_boot_list_2_dm_test_2_dm_test_usb_flash
000000000036f5b8 D _u_boot_list_2_dm_test_2_dm_test_usb_keyb
000000000036f5d8 D _u_boot_list_2_dm_test_2_dm_test_usb_multi
000000000036f5f8 D _u_boot_list_2_dm_test_2_dm_test_usb_stop
000000000036f618 D _u_boot_list_2_dm_test_2_dm_test_video_ansi
000000000036f638 D _u_boot_list_2_dm_test_2_dm_test_video_base
000000000036f658 D _u_boot_list_2_dm_test_2_dm_test_video_bmp
000000000036f678 D _u_boot_list_2_dm_test_2_dm_test_video_bmp_comp
000000000036f698 D _u_boot_list_2_dm_test_2_dm_test_video_chars
000000000036f6b8 D _u_boot_list_2_dm_test_2_dm_test_video_context
000000000036f6d8 D _u_boot_list_2_dm_test_2_dm_test_video_rotation1
000000000036f6f8 D _u_boot_list_2_dm_test_2_dm_test_video_rotation2
000000000036f718 D _u_boot_list_2_dm_test_2_dm_test_video_rotation3
000000000036f738 D _u_boot_list_2_dm_test_2_dm_test_video_text
000000000036f758 D _u_boot_list_2_dm_test_2_dm_test_video_truetype
000000000036f778 D _u_boot_list_2_dm_test_2_dm_test_video_truetype_bs
000000000036f798 D _u_boot_list_2_dm_test_2_dm_test_video_truetype_scroll
000000000036f7b8 D _u_boot_list_2_dm_test_2_dm_test_wdt_base
000000000036f7d8 D _u_boot_list_2_driver_2_act8846_buck
000000000036f850 D _u_boot_list_2_driver_2_axi_sandbox_bus
000000000036f8c8 D _u_boot_list_2_driver_2_board_sandbox
000000000036f940 D _u_boot_list_2_driver_2_clk_fixed_rate
000000000036f9b8 D _u_boot_list_2_driver_2_clk_sandbox
000000000036fa30 D _u_boot_list_2_driver_2_cpu_bus
000000000036faa8 D _u_boot_list_2_driver_2_cpu_sandbox
000000000036fb20 D _u_boot_list_2_driver_2_cros_ec_i2c
000000000036fb98 D _u_boot_list_2_driver_2_cros_ec_kbd
000000000036fc10 D _u_boot_list_2_driver_2_cros_ec_ldo
000000000036fc88 D _u_boot_list_2_driver_2_cros_ec_lpc
000000000036fd00 D _u_boot_list_2_driver_2_cros_ec_sandbox
000000000036fd78 D _u_boot_list_2_driver_2_cros_ec_spi
000000000036fdf0 D _u_boot_list_2_driver_2_cros_ec_tunnel
000000000036fe68 D _u_boot_list_2_driver_2_demo_shape_drv
000000000036fee0 D _u_boot_list_2_driver_2_demo_simple_drv
000000000036ff58 D _u_boot_list_2_driver_2_efi_blk
000000000036ffd0 D _u_boot_list_2_driver_2_efi_block
0000000000370048 D _u_boot_list_2_driver_2_eth_sandbox
00000000003700c0 D _u_boot_list_2_driver_2_eth_sandbox_raw
0000000000370138 D _u_boot_list_2_driver_2_fdt_dummy_drv
00000000003701b0 D _u_boot_list_2_driver_2_fixed_regulator
0000000000370228 D _u_boot_list_2_driver_2_generic_syscon
00000000003702a0 D _u_boot_list_2_driver_2_gpio_pm8916
0000000000370318 D _u_boot_list_2_driver_2_gpio_sandbox
0000000000370390 D _u_boot_list_2_driver_2_i2c_arbitrator
0000000000370408 D _u_boot_list_2_driver_2_i2c_eeprom_std
0000000000370480 D _u_boot_list_2_driver_2_i2c_generic_chip_drv
00000000003704f8 D _u_boot_list_2_driver_2_i2c_gpio
0000000000370570 D _u_boot_list_2_driver_2_i2c_mux_bus
00000000003705e8 D _u_boot_list_2_driver_2_i2c_sandbox
0000000000370660 D _u_boot_list_2_driver_2_i8042_kbd
00000000003706d8 D _u_boot_list_2_driver_2_ide
0000000000370750 D _u_boot_list_2_driver_2_ide_blk
00000000003707c8 D _u_boot_list_2_driver_2_led_gpio
0000000000370840 D _u_boot_list_2_driver_2_max77686_buck
00000000003708b8 D _u_boot_list_2_driver_2_max77686_ldo
0000000000370930 D _u_boot_list_2_driver_2_misc_sandbox
00000000003709a8 D _u_boot_list_2_driver_2_mmc
0000000000370a20 D _u_boot_list_2_driver_2_mmc_blk
0000000000370a98 D _u_boot_list_2_driver_2_mmc_sandbox
0000000000370b10 D _u_boot_list_2_driver_2_mod_exp_sw
0000000000370b88 D _u_boot_list_2_driver_2_msm_spmi
0000000000370c00 D _u_boot_list_2_driver_2_nvme
0000000000370c78 D _u_boot_list_2_driver_2_nvme_blk
0000000000370cf0 D _u_boot_list_2_driver_2_pci_bridge_drv
0000000000370d68 D _u_boot_list_2_driver_2_pci_generic_drv
0000000000370de0 D _u_boot_list_2_driver_2_pci_sandbox
0000000000370e58 D _u_boot_list_2_driver_2_pfuze100_regulator
0000000000370ed0 D _u_boot_list_2_driver_2_phy_sandbox
0000000000370f48 D _u_boot_list_2_driver_2_pinconfig_generic
0000000000370fc0 D _u_boot_list_2_driver_2_pmic_act8846
0000000000371038 D _u_boot_list_2_driver_2_pmic_max77686
00000000003710b0 D _u_boot_list_2_driver_2_pmic_mc34708
0000000000371128 D _u_boot_list_2_driver_2_pmic_pfuze100
00000000003711a0 D _u_boot_list_2_driver_2_pmic_pm8916
0000000000371218 D _u_boot_list_2_driver_2_pmic_rk8xx
0000000000371290 D _u_boot_list_2_driver_2_pmic_s2mps11
0000000000371308 D _u_boot_list_2_driver_2_pmic_s5m8767
0000000000371380 D _u_boot_list_2_driver_2_pmic_tps65090
00000000003713f8 D _u_boot_list_2_driver_2_pwm_backlight
0000000000371470 D _u_boot_list_2_driver_2_pwrkey_pm8941
00000000003714e8 D _u_boot_list_2_driver_2_rk8xx_buck
0000000000371560 D _u_boot_list_2_driver_2_rk8xx_ldo
00000000003715d8 D _u_boot_list_2_driver_2_rk8xx_switch
0000000000371650 D _u_boot_list_2_driver_2_root_driver
00000000003716c8 D _u_boot_list_2_driver_2_rtc_sandbox
0000000000371740 D _u_boot_list_2_driver_2_s5m8767_buck
00000000003717b8 D _u_boot_list_2_driver_2_s5m8767_ldo
0000000000371830 D _u_boot_list_2_driver_2_sandbox_adc
00000000003718a8 D _u_boot_list_2_driver_2_sandbox_axi_store
0000000000371920 D _u_boot_list_2_driver_2_sandbox_buck
0000000000371998 D _u_boot_list_2_driver_2_sandbox_clk_test
0000000000371a10 D _u_boot_list_2_driver_2_sandbox_eth_raw_bus
0000000000371a88 D _u_boot_list_2_driver_2_sandbox_firmware
0000000000371b00 D _u_boot_list_2_driver_2_sandbox_host_blk
0000000000371b78 D _u_boot_list_2_driver_2_sandbox_i2c_emul
0000000000371bf0 D _u_boot_list_2_driver_2_sandbox_i2c_pmic_emul
0000000000371c68 D _u_boot_list_2_driver_2_sandbox_i2c_rtc_emul
0000000000371ce0 D _u_boot_list_2_driver_2_sandbox_ldo
0000000000371d58 D _u_boot_list_2_driver_2_sandbox_mbox
0000000000371dd0 D _u_boot_list_2_driver_2_sandbox_mbox_test
0000000000371e48 D _u_boot_list_2_driver_2_sandbox_pinctrl
0000000000371ec0 D _u_boot_list_2_driver_2_sandbox_pmic
0000000000371f38 D _u_boot_list_2_driver_2_sandbox_power_domain
0000000000371fb0 D _u_boot_list_2_driver_2_sandbox_power_domain_test
0000000000372028 D _u_boot_list_2_driver_2_sandbox_reset
00000000003720a0 D _u_boot_list_2_driver_2_sandbox_reset_test
0000000000372118 D _u_boot_list_2_driver_2_sandbox_sf_emul
0000000000372190 D _u_boot_list_2_driver_2_sandbox_swap_case_emul
0000000000372208 D _u_boot_list_2_driver_2_sandbox_syscon
0000000000372280 D _u_boot_list_2_driver_2_sandbox_testproc
00000000003722f8 D _u_boot_list_2_driver_2_sandbox_timer
0000000000372370 D _u_boot_list_2_driver_2_sandbox_tpm
00000000003723e8 D _u_boot_list_2_driver_2_sandbox_tpm2
0000000000372460 D _u_boot_list_2_driver_2_sata_blk
00000000003724d8 D _u_boot_list_2_driver_2_scsi_blk
0000000000372550 D _u_boot_list_2_driver_2_sdl_sandbox
00000000003725c8 D _u_boot_list_2_driver_2_serial_sandbox
0000000000372640 D _u_boot_list_2_driver_2_simple_bus_drv
00000000003726b8 D _u_boot_list_2_driver_2_simple_panel
0000000000372730 D _u_boot_list_2_driver_2_smem_sandbox
00000000003727a8 D _u_boot_list_2_driver_2_spi_flash_std
0000000000372820 D _u_boot_list_2_driver_2_spi_generic_drv
0000000000372898 D _u_boot_list_2_driver_2_spi_sandbox
0000000000372910 D _u_boot_list_2_driver_2_sysreset_sandbox
0000000000372988 D _u_boot_list_2_driver_2_test2_drv
0000000000372a00 D _u_boot_list_2_driver_2_test_act_dma_drv
0000000000372be0 D _u_boot_list_2_driver_2_testbus_drv
0000000000372a78 D _u_boot_list_2_driver_2_test_drv
0000000000372c58 D _u_boot_list_2_driver_2_testfdt_drv
0000000000372af0 D _u_boot_list_2_driver_2_test_manual_drv
0000000000372b68 D _u_boot_list_2_driver_2_test_pre_reloc_drv
0000000000372cd0 D _u_boot_list_2_driver_2_testprobe_drv
0000000000372d48 D _u_boot_list_2_driver_2_tps65090_fet
0000000000372dc0 D _u_boot_list_2_driver_2_usb_dev_generic_drv
0000000000372e38 D _u_boot_list_2_driver_2_usb_generic_hub
0000000000372eb0 D _u_boot_list_2_driver_2_usb_kbd
0000000000372f28 D _u_boot_list_2_driver_2_usb_mass_storage
0000000000372fa0 D _u_boot_list_2_driver_2_usb_sandbox
0000000000373018 D _u_boot_list_2_driver_2_usb_sandbox_flash
0000000000373090 D _u_boot_list_2_driver_2_usb_sandbox_hub
0000000000373108 D _u_boot_list_2_driver_2_usb_sandbox_keyb
0000000000373180 D _u_boot_list_2_driver_2_usb_storage_blk
00000000003731f8 D _u_boot_list_2_driver_2_vidconsole_1
0000000000373270 D _u_boot_list_2_driver_2_vidconsole_2
00000000003732e8 D _u_boot_list_2_driver_2_vidconsole_3
0000000000373360 D _u_boot_list_2_driver_2_vidconsole_normal
00000000003733d8 D _u_boot_list_2_driver_2_vidconsole_truetype
0000000000373450 D _u_boot_list_2_driver_2_warm_pwm_sandbox
00000000003734c8 D _u_boot_list_2_driver_2_warm_ram_sandbox
0000000000373540 D _u_boot_list_2_driver_2_warm_sysreset_sandbox
00000000003735b8 D _u_boot_list_2_driver_2_wdt_sandbox
0000000000373630 D _u_boot_list_2_driver_info_2_demo0
0000000000373640 D _u_boot_list_2_driver_info_2_demo1
0000000000373650 D _u_boot_list_2_driver_info_2_demo2
0000000000373660 D _u_boot_list_2_driver_info_2_demo3
0000000000373670 D _u_boot_list_2_driver_info_2_demo4
0000000000373680 D _u_boot_list_2_driver_info_2_dm_test_info1
0000000000373690 D _u_boot_list_2_driver_info_2_dm_test_info2
00000000003736a0 D _u_boot_list_2_driver_info_2_dm_test_info3
00000000003736b0 D _u_boot_list_2_driver_info_2_gpio_sandbox
00000000003736c0 D _u_boot_list_2_driver_info_2_mod_exp_sw
00000000003736d0 D _u_boot_list_2_driver_info_2_proc_3_demo
00000000003736e0 D _u_boot_list_2_driver_info_2_sandbox_timer_non_fdt
00000000003736f0 D _u_boot_list_2_driver_info_2_serial_sandbox_non_fdt
0000000000373700 D _u_boot_list_2_driver_info_2_sysreset_sandbox_non_fdt
0000000000373710 D _u_boot_list_2_env_clbk_2_baudrate
0000000000373720 D _u_boot_list_2_env_clbk_2_callbacks
0000000000373730 D _u_boot_list_2_env_clbk_2_console
0000000000373740 D _u_boot_list_2_env_clbk_2_dnsip
0000000000373750 D _u_boot_list_2_env_clbk_2_ethaddr
0000000000373760 D _u_boot_list_2_env_clbk_2_flags
0000000000373770 D _u_boot_list_2_env_clbk_2_gatewayip
0000000000373780 D _u_boot_list_2_env_clbk_2_ipaddr
0000000000373790 D _u_boot_list_2_env_clbk_2_loadaddr
00000000003737a0 D _u_boot_list_2_env_clbk_2_netmask
00000000003737b0 D _u_boot_list_2_env_clbk_2_nvlan
00000000003737c0 D _u_boot_list_2_env_clbk_2_serverip
00000000003737d0 D _u_boot_list_2_env_clbk_2_silent
00000000003737e0 D _u_boot_list_2_env_clbk_2_vlan
00000000003737f0 D _u_boot_list_2_env_driver_2_nowhere
0000000000373818 D _u_boot_list_2_env_test_2_env_test_attrs_lookup
0000000000373838 D _u_boot_list_2_env_test_2_env_test_attrs_lookup_regex
0000000000373858 D _u_boot_list_2_log_driver_2_console
0000000000373868 D _u_boot_list_2_overlay_test_2_fdt_overlay_add_node_by_path
0000000000373888 D _u_boot_list_2_overlay_test_2_fdt_overlay_add_node_by_phandle
00000000003738a8 D _u_boot_list_2_overlay_test_2_fdt_overlay_add_str_property
00000000003738c8 D
_u_boot_list_2_overlay_test_2_fdt_overlay_add_subnode_property
00000000003738e8 D _u_boot_list_2_overlay_test_2_fdt_overlay_change_int_property
0000000000373908 D _u_boot_list_2_overlay_test_2_fdt_overlay_change_str_property
0000000000373928 D _u_boot_list_2_overlay_test_2_fdt_overlay_local_phandle
0000000000373948 D _u_boot_list_2_overlay_test_2_fdt_overlay_local_phandles
0000000000373968 D _u_boot_list_2_overlay_test_2_fdt_overlay_stacked
0000000000373988 D _u_boot_list_2_part_driver_2_a_efi
00000000003739b0 D _u_boot_list_2_part_driver_2_amiga
00000000003739d8 D _u_boot_list_2_part_driver_2_dos
0000000000373a00 D _u_boot_list_2_part_driver_2_iso
0000000000373a28 D _u_boot_list_2_part_driver_2_mac
0000000000373a50 D _u_boot_list_2_pci_driver_entry_2_ide
0000000000373a60 D _u_boot_list_2_pci_driver_entry_2_nvme
0000000000373a70 D _u_boot_list_2_pci_driver_entry_2_sandbox_swap_case_emul
0000000000373a80 D _u_boot_list_2_state_io_2_cros_ec
0000000000373aa0 D _u_boot_list_2_state_io_2_sandbox_tpm
0000000000373ac0 D _u_boot_list_2_uclass_2_adc
0000000000373b40 D _u_boot_list_2_uclass_2_axi
0000000000373bc0 D _u_boot_list_2_uclass_2_axi_emul
0000000000373c40 D _u_boot_list_2_uclass_2_backlight
0000000000373cc0 D _u_boot_list_2_uclass_2_blk
0000000000373d40 D _u_boot_list_2_uclass_2_board
0000000000373dc0 D _u_boot_list_2_uclass_2_clk
0000000000373e40 D _u_boot_list_2_uclass_2_cpu
0000000000373ec0 D _u_boot_list_2_uclass_2_cros_ec
0000000000373f40 D _u_boot_list_2_uclass_2_demo
0000000000373fc0 D _u_boot_list_2_uclass_2_efi
0000000000374040 D _u_boot_list_2_uclass_2_eth
00000000003740c0 D _u_boot_list_2_uclass_2_fdt_dummy
0000000000374140 D _u_boot_list_2_uclass_2_firmware
00000000003741c0 D _u_boot_list_2_uclass_2_gpio
0000000000374240 D _u_boot_list_2_uclass_2_i2c
00000000003742c0 D _u_boot_list_2_uclass_2_i2c_eeprom
0000000000374340 D _u_boot_list_2_uclass_2_i2c_emul
00000000003743c0 D _u_boot_list_2_uclass_2_i2c_generic
0000000000374440 D _u_boot_list_2_uclass_2_i2c_mux
00000000003744c0 D _u_boot_list_2_uclass_2_ide
0000000000374540 D _u_boot_list_2_uclass_2_keyboard
00000000003745c0 D _u_boot_list_2_uclass_2_led
0000000000374640 D _u_boot_list_2_uclass_2_mailbox
00000000003746c0 D _u_boot_list_2_uclass_2_misc
0000000000374740 D _u_boot_list_2_uclass_2_mmc
00000000003747c0 D _u_boot_list_2_uclass_2_mod_exp
0000000000374840 D _u_boot_list_2_uclass_2_nvme
00000000003748c0 D _u_boot_list_2_uclass_2_panel
0000000000374940 D _u_boot_list_2_uclass_2_pci
00000000003749c0 D _u_boot_list_2_uclass_2_pci_emul
0000000000374a40 D _u_boot_list_2_uclass_2_pci_generic
0000000000374ac0 D _u_boot_list_2_uclass_2_phy
0000000000374b40 D _u_boot_list_2_uclass_2_pinconfig
0000000000374bc0 D _u_boot_list_2_uclass_2_pinctrl
0000000000374c40 D _u_boot_list_2_uclass_2_pmic
0000000000374cc0 D _u_boot_list_2_uclass_2_power_domain
0000000000374d40 D _u_boot_list_2_uclass_2_pwm
0000000000374dc0 D _u_boot_list_2_uclass_2_pwrseq
0000000000374e40 D _u_boot_list_2_uclass_2_ram
0000000000374ec0 D _u_boot_list_2_uclass_2_regulator
0000000000374f40 D _u_boot_list_2_uclass_2_reset
0000000000374fc0 D _u_boot_list_2_uclass_2_root
0000000000375040 D _u_boot_list_2_uclass_2_rproc
00000000003750c0 D _u_boot_list_2_uclass_2_rtc
0000000000375140 D _u_boot_list_2_uclass_2_serial
00000000003751c0 D _u_boot_list_2_uclass_2_simple_bus
0000000000375240 D _u_boot_list_2_uclass_2_smem
00000000003752c0 D _u_boot_list_2_uclass_2_spi
0000000000375340 D _u_boot_list_2_uclass_2_spi_emul
00000000003753c0 D _u_boot_list_2_uclass_2_spi_flash
0000000000375440 D _u_boot_list_2_uclass_2_spi_generic
00000000003754c0 D _u_boot_list_2_uclass_2_spmi
0000000000375540 D _u_boot_list_2_uclass_2_syscon
00000000003755c0 D _u_boot_list_2_uclass_2_sysreset
0000000000375640 D _u_boot_list_2_uclass_2_test
00000000003756c0 D _u_boot_list_2_uclass_2_testbus
0000000000375740 D _u_boot_list_2_uclass_2_testfdt
00000000003757c0 D _u_boot_list_2_uclass_2_testprobe
0000000000375840 D _u_boot_list_2_uclass_2_timer
00000000003758c0 D _u_boot_list_2_uclass_2_tpm
0000000000375940 D _u_boot_list_2_uclass_2_usb
00000000003759c0 D _u_boot_list_2_uclass_2_usb_dev_generic
0000000000375a40 D _u_boot_list_2_uclass_2_usb_emul
0000000000375ac0 D _u_boot_list_2_uclass_2_usb_hub
0000000000375b40 D _u_boot_list_2_uclass_2_usb_mass_storage
0000000000375bc0 D _u_boot_list_2_uclass_2_vidconsole
0000000000375c40 D _u_boot_list_2_uclass_2_video
0000000000375cc0 D _u_boot_list_2_uclass_2_wdt
0000000000375d40 D _u_boot_list_2_unicode_test_2_ut_string16
0000000000375d60 D _u_boot_list_2_unicode_test_2_ut_utf16_get
0000000000375d80 D _u_boot_list_2_unicode_test_2_ut_utf16_put
0000000000375da0 D _u_boot_list_2_unicode_test_2_ut_utf16_strnlen
0000000000375dc0 D _u_boot_list_2_unicode_test_2_ut_utf16_utf8_strcpy
0000000000375de0 D _u_boot_list_2_unicode_test_2_ut_utf16_utf8_strlen
0000000000375e00 D _u_boot_list_2_unicode_test_2_ut_utf16_utf8_strncpy
0000000000375e20 D _u_boot_list_2_unicode_test_2_ut_utf16_utf8_strnlen
0000000000375e40 D _u_boot_list_2_unicode_test_2_ut_utf8_get
0000000000375e60 D _u_boot_list_2_unicode_test_2_ut_utf8_put
0000000000375e80 D _u_boot_list_2_unicode_test_2_ut_utf8_utf16_strcpy
0000000000375ea0 D _u_boot_list_2_unicode_test_2_ut_utf8_utf16_strlen
0000000000375ec0 D _u_boot_list_2_unicode_test_2_ut_utf8_utf16_strncpy
0000000000375ee0 D _u_boot_list_2_unicode_test_2_ut_utf8_utf16_strnlen
0000000000375f00 D _u_boot_list_2_unicode_test_2_ut_utf_to_lower
0000000000375f20 D _u_boot_list_2_unicode_test_2_ut_utf_to_upper
0000000000375f40 D _u_boot_list_2_usb_driver_entry_2_usb_generic_hub
0000000000375f50 D _u_boot_list_2_usb_driver_entry_2_usb_kbd
0000000000375f60 D _u_boot_list_2_usb_driver_entry_2_usb_mass_storage

Regards,
Simon
Alexander Graf Oct. 16, 2018, 2:48 p.m. UTC | #3
On 29.09.18 20:29, Simon Glass wrote:
> Hi Alex,
> 
> On 23 September 2018 at 23:34, Alexander Graf <agraf@suse.de> wrote:
>>
>>
>> On 24.09.18 00:47, Simon Glass wrote:
>>> On my Ubuntu 18.04.1 machine two driver-model bus tests have started
>>> failing recently. The problem appears to be that the DATA region of the
>>
>> Are you sure it's .data and not .rodata?
>>
>> The linker script should really put all those lists into its own
>> section, so I'm not sure how you end up with them getting write
>> protected. Can you please run
> 
> It doesn't happen on my normal computer, but I upgraded one to Ubuntu
> 18.04 and noticed this. It's a bit odd, but I wonder if it is deciding
> that the section name means it is rodata?
> 
>>
>>   $ objdump -h u-boot
>>
>> on your broken binary? Also do
>>
>>   $ nm u-boot | grep .u_boot_list
>>
>> so we can correlate whether the symbols ended up in the correct section.
> 
> Yes, please see below.

All the list symbols are in the u_boot_list section which is writable. I
don't know why it wouldn't work.

Have you figured out why it breaks for you?


Alex
Simon Glass Oct. 17, 2018, 6:19 p.m. UTC | #4
Hi Alex,

On 16 October 2018 at 08:48, Alexander Graf <agraf@suse.de> wrote:
>
>
>
> On 29.09.18 20:29, Simon Glass wrote:
> > Hi Alex,
> >
> > On 23 September 2018 at 23:34, Alexander Graf <agraf@suse.de> wrote:
> >>
> >>
> >> On 24.09.18 00:47, Simon Glass wrote:
> >>> On my Ubuntu 18.04.1 machine two driver-model bus tests have started
> >>> failing recently. The problem appears to be that the DATA region of the
> >>
> >> Are you sure it's .data and not .rodata?
> >>
> >> The linker script should really put all those lists into its own
> >> section, so I'm not sure how you end up with them getting write
> >> protected. Can you please run
> >
> > It doesn't happen on my normal computer, but I upgraded one to Ubuntu
> > 18.04 and noticed this. It's a bit odd, but I wonder if it is deciding
> > that the section name means it is rodata?
> >
> >>
> >>   $ objdump -h u-boot
> >>
> >> on your broken binary? Also do
> >>
> >>   $ nm u-boot | grep .u_boot_list
> >>
> >> so we can correlate whether the symbols ended up in the correct section.
> >
> > Yes, please see below.
>
> All the list symbols are in the u_boot_list section which is writable. I
> don't know why it wouldn't work.
>
> Have you figured out why it breaks for you?

No, unfortunately not. It is a bit of a mystery!

Regards,
Simon
diff mbox series

Patch

diff --git a/arch/sandbox/cpu/os.c b/arch/sandbox/cpu/os.c
index 5839932b005..8b860959f05 100644
--- a/arch/sandbox/cpu/os.c
+++ b/arch/sandbox/cpu/os.c
@@ -651,3 +651,14 @@  void os_longjmp(ulong *jmp, int ret)
 {
 	longjmp((struct __jmp_buf_tag *)jmp, ret);
 }
+
+int os_mprotect_allow(void *start, size_t len)
+{
+	int page_size = getpagesize();
+
+	/* Move start to the start of a page, len to the end */
+	start = (void *)(((ulong)start) & ~(page_size - 1));
+	len = (len + page_size * 2) & ~(page_size - 1);
+
+	return mprotect(start, len, PROT_READ | PROT_WRITE);
+}
diff --git a/include/os.h b/include/os.h
index c8e0f52d306..54b6044df29 100644
--- a/include/os.h
+++ b/include/os.h
@@ -351,4 +351,15 @@  int os_setjmp(ulong *jmp, int size);
  */
 void os_longjmp(ulong *jmp, int ret);
 
+/**
+ * os_mprotect_allow() - Remove write-protection on a region of memory
+ *
+ * The start and length will be page-aligned before use.
+ *
+ * @start:	Region start
+ * @len:	Region length in bytes
+ * @return 0 if OK, -1 on error from mprotect()
+ */
+int os_mprotect_allow(void *start, size_t len);
+
 #endif
diff --git a/test/dm/bus.c b/test/dm/bus.c
index e9a4028f047..08137a2216a 100644
--- a/test/dm/bus.c
+++ b/test/dm/bus.c
@@ -4,6 +4,9 @@ 
  */
 
 #include <common.h>
+#ifdef CONFIG_SANDBOX
+#include <os.h>
+#endif
 #include <dm.h>
 #include <dm/device-internal.h>
 #include <dm/test.h>
@@ -297,6 +300,11 @@  static int dm_test_bus_parent_data_uclass(struct unit_test_state *uts)
 	ut_assertok(uclass_find_device(UCLASS_TEST_BUS, 0, &bus));
 	drv = (struct driver *)bus->driver;
 	size = drv->per_child_auto_alloc_size;
+
+#ifdef CONFIG_SANDBOX
+	os_mprotect_allow(bus->uclass->uc_drv, sizeof(*bus->uclass->uc_drv));
+	os_mprotect_allow(drv, sizeof(*drv));
+#endif
 	bus->uclass->uc_drv->per_child_auto_alloc_size = size;
 	drv->per_child_auto_alloc_size = 0;
 	ret = test_bus_parent_data(uts);
@@ -440,6 +448,10 @@  static int dm_test_bus_parent_platdata_uclass(struct unit_test_state *uts)
 	ut_assertok(uclass_find_device(UCLASS_TEST_BUS, 0, &bus));
 	drv = (struct driver *)bus->driver;
 	size = drv->per_child_platdata_auto_alloc_size;
+#ifdef CONFIG_SANDBOX
+	os_mprotect_allow(bus->uclass->uc_drv, sizeof(*bus->uclass->uc_drv));
+	os_mprotect_allow(drv, sizeof(*drv));
+#endif
 	bus->uclass->uc_drv->per_child_platdata_auto_alloc_size = size;
 	drv->per_child_platdata_auto_alloc_size = 0;
 	ret = test_bus_parent_platdata(uts);