Merge Mainline
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
077e6b59e8
@ -63,7 +63,7 @@ menuconfig DEVEL
|
||||
|
||||
config CCACHE
|
||||
bool "Use ccache" if DEVEL
|
||||
default y
|
||||
default n
|
||||
help
|
||||
Compiler cache; see https://ccache.samba.org/
|
||||
|
||||
|
||||
@ -19,7 +19,6 @@
|
||||
#
|
||||
# Host packages are built in the same fashion, just use these vars instead:
|
||||
#
|
||||
# HOST_BUILD_DEPENDS:=meson/host
|
||||
# MESON_HOST_ARGS+=-Dfoo -Dbar=baz
|
||||
# MESON_HOST_VARS+=FOO=bar
|
||||
|
||||
@ -57,7 +56,7 @@ MESON_CPU:="$(CPU_TYPE)$(if $(CPU_SUBTYPE),+$(CPU_SUBTYPE))"
|
||||
endif
|
||||
|
||||
define Meson
|
||||
$(2) $(STAGING_DIR_HOST)/bin/$(PYTHON) $(MESON_DIR)/meson.py $(1)
|
||||
$(2) $(STAGING_DIR_HOST)/bin/meson $(1)
|
||||
endef
|
||||
|
||||
define Meson/CreateNativeFile
|
||||
|
||||
@ -157,6 +157,7 @@ $(eval $(call SetupHostCommand,perl,Please install Perl 5.x, \
|
||||
$(eval $(call CleanupPython2))
|
||||
|
||||
$(eval $(call SetupHostCommand,python,Please install Python >= 3.6, \
|
||||
python3.10 -V 2>&1 | grep 'Python 3', \
|
||||
python3.9 -V 2>&1 | grep 'Python 3', \
|
||||
python3.8 -V 2>&1 | grep 'Python 3', \
|
||||
python3.7 -V 2>&1 | grep 'Python 3', \
|
||||
@ -164,6 +165,7 @@ $(eval $(call SetupHostCommand,python,Please install Python >= 3.6, \
|
||||
python3 -V 2>&1 | grep -E 'Python 3\.[6-9]\.?'))
|
||||
|
||||
$(eval $(call SetupHostCommand,python3,Please install Python >= 3.6, \
|
||||
python3.10 -V 2>&1 | grep 'Python 3', \
|
||||
python3.9 -V 2>&1 | grep 'Python 3', \
|
||||
python3.8 -V 2>&1 | grep 'Python 3', \
|
||||
python3.7 -V 2>&1 | grep 'Python 3', \
|
||||
@ -184,7 +186,9 @@ $(eval $(call SetupHostCommand,rsync,Please install 'rsync', \
|
||||
rsync --version </dev/null))
|
||||
|
||||
$(eval $(call SetupHostCommand,which,Please install 'which', \
|
||||
which which | grep which))
|
||||
/usr/bin/which which, \
|
||||
/bin/which which, \
|
||||
which which))
|
||||
|
||||
$(STAGING_DIR_HOST)/bin/mkhash: $(SCRIPT_DIR)/mkhash.c
|
||||
mkdir -p $(dir $@)
|
||||
|
||||
@ -710,9 +710,6 @@
|
||||
<tr><td width="33%"><%:Uptime%></td><td id="uptime">-</td></tr>
|
||||
<tr><td width="33%"><%:Load Average%></td><td id="loadavg">-</td></tr>
|
||||
<tr><td width="33%"><%:CPU usage (%)%></td><td id="cpuusage">-</td></tr>
|
||||
<tr><td width="33%"><%:Source Code%></td><td><a href="https://github.com/immortalwrt" target="_blank">
|
||||
Project ImmortalWrt</a> / <a href="https://github.com/immortalwrt/immortalwrt" target="_blank">ImmortalWrt Core</a>
|
||||
</td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
|
||||
@ -724,9 +724,6 @@
|
||||
<tr><td width="33%"><%:Uptime%></td><td id="uptime">-</td></tr>
|
||||
<tr><td width="33%"><%:Load Average%></td><td id="loadavg">-</td></tr>
|
||||
<tr><td width="33%"><%:CPU usage (%)%></td><td id="cpuusage">-</td></tr>
|
||||
<tr><td width="33%"><%:Source Code%></td><td><a href="https://github.com/immortalwrt" target="_blank">
|
||||
Project ImmortalWrt</a> / <a href="https://github.com/immortalwrt/immortalwrt" target="_blank">ImmortalWrt Core</a>
|
||||
</td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
||||
|
||||
@ -182,22 +182,6 @@ endef
|
||||
$(eval $(call KernelPackage,eeprom-at25))
|
||||
|
||||
|
||||
define KernelPackage/gpio-dev
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Generic GPIO char device support
|
||||
DEPENDS:=@GPIO_SUPPORT
|
||||
KCONFIG:=CONFIG_GPIO_DEVICE
|
||||
FILES:=$(LINUX_DIR)/drivers/char/gpio_dev.ko
|
||||
AUTOLOAD:=$(call AutoLoad,40,gpio_dev)
|
||||
endef
|
||||
|
||||
define KernelPackage/gpio-dev/description
|
||||
Kernel module to allows control of GPIO pins using a character device.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,gpio-dev))
|
||||
|
||||
|
||||
define KernelPackage/gpio-f7188x
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Fintek F718xx/F818xx GPIO Support
|
||||
|
||||
@ -7,8 +7,8 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=r8125
|
||||
PKG_VERSION:=9.005.06
|
||||
PKG_RELEASE:=1
|
||||
PKG_VERSION:=9.006.04
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
|
||||
|
||||
@ -47,6 +47,8 @@ ENABLE_PTP_MASTER_MODE = n
|
||||
ENABLE_RSS_SUPPORT = y
|
||||
ENABLE_LIB_SUPPORT = n
|
||||
ENABLE_USE_FIRMWARE_FILE = n
|
||||
DISABLE_PM_SUPPORT = n
|
||||
DISABLE_MULTI_MSIX_VECTOR = n
|
||||
|
||||
ifneq ($(KERNELRELEASE),)
|
||||
obj-m := r8125.o
|
||||
@ -111,6 +113,12 @@ ifneq ($(KERNELRELEASE),)
|
||||
r8125-objs += r8125_firmware.o
|
||||
EXTRA_CFLAGS += -DENABLE_USE_FIRMWARE_FILE
|
||||
endif
|
||||
ifeq ($(DISABLE_PM_SUPPORT), y)
|
||||
EXTRA_CFLAGS += -DDISABLE_PM_SUPPORT
|
||||
endif
|
||||
ifeq ($(DISABLE_MULTI_MSIX_VECTOR), y)
|
||||
EXTRA_CFLAGS += -DDISABLE_MULTI_MSIX_VECTOR
|
||||
endif
|
||||
else
|
||||
BASEDIR := /lib/modules/$(shell uname -r)
|
||||
KERNELDIR ?= $(BASEDIR)/build
|
||||
|
||||
@ -363,7 +363,7 @@ do { \
|
||||
#define RSS_SUFFIX ""
|
||||
#endif
|
||||
|
||||
#define RTL8125_VERSION "9.005.06" NAPI_SUFFIX DASH_SUFFIX REALWOW_SUFFIX PTP_SUFFIX RSS_SUFFIX
|
||||
#define RTL8125_VERSION "9.006.04" NAPI_SUFFIX DASH_SUFFIX REALWOW_SUFFIX PTP_SUFFIX RSS_SUFFIX
|
||||
#define MODULENAME "r8125"
|
||||
#define PFX MODULENAME ": "
|
||||
|
||||
@ -469,7 +469,7 @@ This is free software, and you are welcome to redistribute it under certain cond
|
||||
#define OCP_STD_PHY_BASE 0xa400
|
||||
|
||||
#ifdef ENABLE_LIB_SUPPORT
|
||||
#define R8125_MULTI_RX_Q(tp) 1
|
||||
#define R8125_MULTI_RX_Q(tp) 0
|
||||
#else
|
||||
#define R8125_MULTI_RX_Q(tp) (tp->num_rx_rings > 1)
|
||||
#endif
|
||||
@ -542,6 +542,8 @@ This is free software, and you are welcome to redistribute it under certain cond
|
||||
|
||||
#define RTK_ADVERTISE_2500FULL 0x80
|
||||
#define RTK_LPA_ADVERTISE_2500FULL 0x20
|
||||
#define RTK_LPA_ADVERTISE_5000FULL 0x40
|
||||
#define RTK_LPA_ADVERTISE_10000FULL 0x800
|
||||
|
||||
/* Tx NO CLOSE */
|
||||
#define MAX_TX_NO_CLOSE_DESC_PTR_V2 0x10000
|
||||
@ -1201,16 +1203,24 @@ enum RTL8125_registers {
|
||||
TIMER_INT3_8125 = 0x00F4,
|
||||
INT_MITI_V2_0_RX = 0x0A00,
|
||||
INT_MITI_V2_0_TX = 0x0A02,
|
||||
INT_MITI_V2_1_RX = 0x0A08,
|
||||
INT_MITI_V2_1_TX = 0x0A0A,
|
||||
IMR_V2_CLEAR_REG_8125 = 0x0D00,
|
||||
ISR_V2_8125 = 0x0D04,
|
||||
IMR_V2_SET_REG_8125 = 0x0D0C,
|
||||
TDU_STA_8125 = 0x0D08,
|
||||
RDU_STA_8125 = 0x0D0A,
|
||||
TX_NEW_CTRL = 0x203E,
|
||||
TNPDS_Q1_LOW_8125 = 0x2100,
|
||||
PLA_TXQ0_IDLE_CREDIT = 0x2500,
|
||||
PLA_TXQ1_IDLE_CREDIT = 0x2504,
|
||||
SW_TAIL_PTR0_8125 = 0x2800,
|
||||
HW_CLO_PTR0_8125 = 0x2802,
|
||||
RDSAR_Q1_LOW_8125 = 0x4000,
|
||||
RSS_CTRL_8125 = 0x4500,
|
||||
Q_NUM_CTRL_8125 = 0x4800,
|
||||
RSS_KEY_8125 = 0x4600,
|
||||
RSS_INDIRECTION_TBL_8125_V2 = 0x4700,
|
||||
EEE_TXIDLE_TIMER_8125 = 0x6048,
|
||||
PTP_CTRL_8125 = 0x6800,
|
||||
PTP_STATUS_8125 = 0x6802,
|
||||
@ -1720,6 +1730,14 @@ struct pci_resource {
|
||||
u32 pci_sn_h;
|
||||
};
|
||||
|
||||
enum r8125_flag {
|
||||
R8125_FLAG_DOWN = 0,
|
||||
R8125_FLAG_TASK_RESET_PENDING,
|
||||
R8125_FLAG_TASK_ESD_CHECK_PENDING,
|
||||
R8125_FLAG_TASK_LINKCHG_CHECK_PENDING,
|
||||
R8125_FLAG_MAX
|
||||
};
|
||||
|
||||
struct rtl8125_tx_ring {
|
||||
void* priv;
|
||||
u32 index;
|
||||
@ -1768,6 +1786,210 @@ struct r8125_irq {
|
||||
char name[IFNAMSIZ + 10];
|
||||
};
|
||||
|
||||
#pragma pack(1)
|
||||
struct rtl8125_regs {
|
||||
//00
|
||||
u8 mac_id[6];
|
||||
u16 reg_06;
|
||||
u8 mar[8];
|
||||
//10
|
||||
u64 dtccr;
|
||||
u16 ledsel0;
|
||||
u16 legreg;
|
||||
u32 tctr3;
|
||||
//20
|
||||
u32 txq0_dsc_st_addr_0;
|
||||
u32 txq0_dsc_st_addr_2;
|
||||
u64 reg_28;
|
||||
//30
|
||||
u16 rit;
|
||||
u16 ritc;
|
||||
u16 reg_34;
|
||||
u8 reg_36;
|
||||
u8 command;
|
||||
u32 imr0;
|
||||
u32 isr0;
|
||||
//40
|
||||
u32 tcr;
|
||||
u32 rcr;
|
||||
u32 tctr0;
|
||||
u32 tctr1;
|
||||
//50
|
||||
u8 cr93c46;
|
||||
u8 config0;
|
||||
u8 config1;
|
||||
u8 config2;
|
||||
u8 config3;
|
||||
u8 config4;
|
||||
u8 config5;
|
||||
u8 tdfnr;
|
||||
u32 timer_int0;
|
||||
u32 timer_int1;
|
||||
//60
|
||||
u32 gphy_mdcmdio;
|
||||
u32 csidr;
|
||||
u32 csiar;
|
||||
u16 phy_status;
|
||||
u8 config6;
|
||||
u8 pmch;
|
||||
//70
|
||||
u32 eridr;
|
||||
u32 eriar;
|
||||
u16 config7;
|
||||
u16 reg_7a;
|
||||
u32 ephy_rxerr_cnt;
|
||||
//80
|
||||
u32 ephy_mdcmdio;
|
||||
u16 ledsel2;
|
||||
u16 ledsel1;
|
||||
u32 tctr2;
|
||||
u32 timer_int2;
|
||||
//90
|
||||
u8 tppoll0;
|
||||
u8 reg_91;
|
||||
u16 reg_92;
|
||||
u16 led_feature;
|
||||
u16 ledsel3;
|
||||
u16 eee_led_config;
|
||||
u16 reg_9a;
|
||||
u32 reg_9c;
|
||||
//a0
|
||||
u32 reg_a0;
|
||||
u32 reg_a4;
|
||||
u32 reg_a8;
|
||||
u32 reg_ac;
|
||||
//b0
|
||||
u32 patch_dbg;
|
||||
u32 reg_b4;
|
||||
u32 gphy_ocp;
|
||||
u32 reg_bc;
|
||||
//c0
|
||||
u32 reg_c0;
|
||||
u32 reg_c4;
|
||||
u32 reg_c8;
|
||||
u16 otp_cmd;
|
||||
u16 otp_pg_config;
|
||||
//d0
|
||||
u16 phy_pwr;
|
||||
u8 twsi_ctrl;
|
||||
u8 oob_ctrl;
|
||||
u16 mac_dbgo;
|
||||
u16 mac_dbg;
|
||||
u16 reg_d8;
|
||||
u16 rms;
|
||||
u32 efuse_data;
|
||||
//e0
|
||||
u16 cplus_cmd;
|
||||
u16 reg_e2;
|
||||
u32 rxq0_dsc_st_addr_0;
|
||||
u32 rxq0_dsc_st_addr_2;
|
||||
u16 reg_ec;
|
||||
u16 tx10midle_cnt;
|
||||
//f0
|
||||
u16 misc0;
|
||||
u16 misc1;
|
||||
u32 timer_int3;
|
||||
u32 cmac_ib;
|
||||
u16 reg_fc;
|
||||
u16 sw_rst;
|
||||
};
|
||||
#pragma pack()
|
||||
|
||||
struct rtl8125_regs_save {
|
||||
union {
|
||||
u8 mac_io[R8125_MAC_REGS_SIZE];
|
||||
|
||||
struct rtl8125_regs mac_reg;
|
||||
};
|
||||
u16 pcie_phy[R8125_EPHY_REGS_SIZE/2];
|
||||
u16 eth_phy[R8125_PHY_REGS_SIZE/2];
|
||||
u32 eri_reg[R8125_ERI_REGS_SIZE/4];
|
||||
u32 pci_reg[R8125_PCI_REGS_SIZE/4];
|
||||
u16 sw_tail_ptr_reg[R8125_MAX_TX_QUEUES];
|
||||
u16 hw_clo_ptr_reg[R8125_MAX_TX_QUEUES];
|
||||
|
||||
//ktime_t begin_ktime;
|
||||
//ktime_t end_ktime;
|
||||
//u64 duration_ns;
|
||||
|
||||
u16 sw0_tail_ptr;
|
||||
u16 next_hwq0_clo_ptr;
|
||||
u16 sw1_tail_ptr;
|
||||
u16 next_hwq1_clo_ptr;
|
||||
|
||||
u16 int_miti_rxq0;
|
||||
u16 int_miti_txq0;
|
||||
u16 int_miti_rxq1;
|
||||
u16 int_miti_txq1;
|
||||
u8 int_config;
|
||||
u32 imr_new;
|
||||
u32 isr_new;
|
||||
|
||||
u8 tdu_status;
|
||||
u16 rdu_status;
|
||||
|
||||
u16 tc_mode;
|
||||
|
||||
u32 txq1_dsc_st_addr_0;
|
||||
u32 txq1_dsc_st_addr_2;
|
||||
|
||||
u32 pla_tx_q0_idle_credit;
|
||||
u32 pla_tx_q1_idle_credit;
|
||||
|
||||
u32 rxq1_dsc_st_addr_0;
|
||||
u32 rxq1_dsc_st_addr_2;
|
||||
|
||||
u32 rss_ctrl;
|
||||
u8 rss_key[RTL8125_RSS_KEY_SIZE];
|
||||
u8 rss_i_table[RTL8125_MAX_INDIRECTION_TABLE_ENTRIES];
|
||||
u16 rss_queue_num_sel_r;
|
||||
};
|
||||
|
||||
struct rtl8125_counters {
|
||||
/* legacy */
|
||||
u64 tx_packets;
|
||||
u64 rx_packets;
|
||||
u64 tx_errors;
|
||||
u32 rx_errors;
|
||||
u16 rx_missed;
|
||||
u16 align_errors;
|
||||
u32 tx_one_collision;
|
||||
u32 tx_multi_collision;
|
||||
u64 rx_unicast;
|
||||
u64 rx_broadcast;
|
||||
u32 rx_multicast;
|
||||
u16 tx_aborted;
|
||||
u16 tx_underrun;
|
||||
|
||||
/* extended */
|
||||
u64 tx_octets;
|
||||
u64 rx_octets;
|
||||
u64 rx_multicast64;
|
||||
u64 tx_unicast64;
|
||||
u64 tx_broadcast64;
|
||||
u64 tx_multicast64;
|
||||
u32 tx_pause_on;
|
||||
u32 tx_pause_off;
|
||||
u32 tx_pause_all;
|
||||
u32 tx_deferred;
|
||||
u32 tx_late_collision;
|
||||
u32 tx_all_collision;
|
||||
u32 tx_aborted32;
|
||||
u32 align_errors32;
|
||||
u32 rx_frame_too_long;
|
||||
u32 rx_runt;
|
||||
u32 rx_pause_on;
|
||||
u32 rx_pause_off;
|
||||
u32 rx_pause_all;
|
||||
u32 rx_unknown_opcode;
|
||||
u32 rx_mac_error;
|
||||
u32 tx_underrun32;
|
||||
u32 rx_mac_missed;
|
||||
u32 rx_tcam_dropped;
|
||||
u32 tdu;
|
||||
u32 rdu;
|
||||
};
|
||||
|
||||
/* Flow Control Settings */
|
||||
enum rtl8125_fc_mode {
|
||||
rtl8125_fc_none = 0,
|
||||
@ -1788,7 +2010,6 @@ struct rtl8125_private {
|
||||
unsigned int min_irq_nvecs;
|
||||
//struct msix_entry msix_entries[R8125_MAX_MSIX_VEC];
|
||||
struct net_device_stats stats; /* statistics of net device */
|
||||
spinlock_t lock; /* spin lock flag */
|
||||
u32 msg_enable;
|
||||
u32 tx_tcp_csum_cmd;
|
||||
u32 tx_udp_csum_cmd;
|
||||
@ -1819,8 +2040,8 @@ struct rtl8125_private {
|
||||
struct rtl8125_ring lib_tx_ring[R8125_MAX_TX_QUEUES];
|
||||
struct rtl8125_ring lib_rx_ring[R8125_MAX_RX_QUEUES];
|
||||
#endif
|
||||
struct timer_list esd_timer;
|
||||
struct timer_list link_timer;
|
||||
//struct timer_list esd_timer;
|
||||
//struct timer_list link_timer;
|
||||
struct pci_resource pci_cfg_space;
|
||||
unsigned int esd_flag;
|
||||
unsigned int pci_cfg_is_read;
|
||||
@ -1863,10 +2084,15 @@ struct rtl8125_private {
|
||||
unsigned int (*phy_reset_pending)(struct net_device *);
|
||||
unsigned int (*link_ok)(struct net_device *);
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
|
||||
struct work_struct task;
|
||||
struct work_struct reset_task;
|
||||
struct work_struct esd_task;
|
||||
struct work_struct linkchg_task;
|
||||
#else
|
||||
struct delayed_work task;
|
||||
struct delayed_work reset_task;
|
||||
struct delayed_work esd_task;
|
||||
struct delayed_work linkchg_task;
|
||||
#endif
|
||||
DECLARE_BITMAP(task_flags, R8125_FLAG_MAX);
|
||||
unsigned features;
|
||||
|
||||
u8 org_pci_offset_99;
|
||||
@ -1921,6 +2147,11 @@ struct rtl8125_private {
|
||||
|
||||
u8 random_mac;
|
||||
|
||||
u16 phy_reg_aner;
|
||||
u16 phy_reg_anlpar;
|
||||
u16 phy_reg_gbsr;
|
||||
u16 phy_reg_status_2500;
|
||||
|
||||
u32 HwPcieSNOffset;
|
||||
|
||||
u8 HwSuppTxNoCloseVer;
|
||||
@ -1931,6 +2162,8 @@ struct rtl8125_private {
|
||||
|
||||
u8 HwSuppIntMitiVer;
|
||||
|
||||
u8 HwSuppExtendTallyCounterVer;
|
||||
|
||||
u8 check_keep_link_speed;
|
||||
u8 resume_not_chg_speed;
|
||||
|
||||
@ -2063,9 +2296,7 @@ struct rtl8125_private {
|
||||
#ifdef ENABLE_RSS_SUPPORT
|
||||
u32 rss_flags;
|
||||
/* Receive Side Scaling settings */
|
||||
#define RTL8125_RSS_KEY_SIZE 40 /* size of RSS Hash Key in bytes */
|
||||
u8 rss_key[RTL8125_RSS_KEY_SIZE];
|
||||
#define RTL8125_MAX_INDIRECTION_TABLE_ENTRIES 128
|
||||
u8 rss_indir_tbl[RTL8125_MAX_INDIRECTION_TABLE_ENTRIES];
|
||||
u32 rss_options;
|
||||
#endif
|
||||
@ -2248,7 +2479,6 @@ void rtl8125_hw_config(struct net_device *dev);
|
||||
void rtl8125_hw_set_timer_int_8125(struct rtl8125_private *tp, u32 message_id, u8 timer_intmiti_val);
|
||||
void rtl8125_set_rx_q_num(struct rtl8125_private *tp, unsigned int num_rx_queues);
|
||||
void rtl8125_set_tx_q_num(struct rtl8125_private *tp, unsigned int num_tx_queues);
|
||||
int rtl8125_set_real_num_queue(struct rtl8125_private *tp);
|
||||
void rtl8125_hw_start(struct net_device *dev);
|
||||
void rtl8125_hw_reset(struct net_device *dev);
|
||||
void rtl8125_tx_clear(struct rtl8125_private *tp);
|
||||
@ -2256,6 +2486,7 @@ void rtl8125_rx_clear(struct rtl8125_private *tp);
|
||||
int rtl8125_init_ring(struct net_device *dev);
|
||||
void rtl8125_hw_set_rx_packet_filter(struct net_device *dev);
|
||||
void rtl8125_enable_hw_linkchg_interrupt(struct rtl8125_private *tp);
|
||||
int rtl8125_dump_tally_counter(struct rtl8125_private *tp, dma_addr_t paddr);
|
||||
|
||||
#ifndef ENABLE_LIB_SUPPORT
|
||||
static inline void rtl8125_lib_reset_prepare(struct rtl8125_private *tp) { }
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -336,9 +336,6 @@ int rtl8125_get_rxfh(struct net_device *dev, u32 *indir, u8 *key,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define RSS_KEY_8125 0x4600
|
||||
#define RSS_INDIRECTION_TBL_8125_V2 0x4700
|
||||
|
||||
static u32 rtl8125_rss_key_reg(struct rtl8125_private *tp)
|
||||
{
|
||||
return RSS_KEY_8125;
|
||||
|
||||
@ -38,6 +38,9 @@
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#define RTL8125_RSS_KEY_SIZE 40 /* size of RSS Hash Key in bytes */
|
||||
#define RTL8125_MAX_INDIRECTION_TABLE_ENTRIES 128
|
||||
|
||||
enum rtl8125_rss_flag {
|
||||
RTL_8125_RSS_FLAG_HASH_UDP_IPV4 = (1 << 0),
|
||||
RTL_8125_RSS_FLAG_HASH_UDP_IPV6 = (1 << 1),
|
||||
|
||||
@ -47,7 +47,6 @@
|
||||
int rtl8125_tool_ioctl(struct rtl8125_private *tp, struct ifreq *ifr)
|
||||
{
|
||||
struct rtltool_cmd my_cmd;
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
|
||||
if (copy_from_user(&my_cmd, ifr->ifr_data, sizeof(my_cmd)))
|
||||
@ -97,10 +96,7 @@ int rtl8125_tool_ioctl(struct rtl8125_private *tp, struct ifreq *ifr)
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
my_cmd.data = rtl8125_mdio_prot_read(tp, my_cmd.offset);
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
|
||||
if (copy_to_user(ifr->ifr_data, &my_cmd, sizeof(my_cmd))) {
|
||||
ret = -EFAULT;
|
||||
break;
|
||||
@ -112,19 +108,14 @@ int rtl8125_tool_ioctl(struct rtl8125_private *tp, struct ifreq *ifr)
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
rtl8125_mdio_prot_write(tp, my_cmd.offset, my_cmd.data);
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
break;
|
||||
|
||||
case RTLTOOL_READ_EPHY:
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
my_cmd.data = rtl8125_ephy_read(tp, my_cmd.offset);
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
|
||||
if (copy_to_user(ifr->ifr_data, &my_cmd, sizeof(my_cmd))) {
|
||||
ret = -EFAULT;
|
||||
break;
|
||||
@ -136,17 +127,13 @@ int rtl8125_tool_ioctl(struct rtl8125_private *tp, struct ifreq *ifr)
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
rtl8125_ephy_write(tp, my_cmd.offset, my_cmd.data);
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
break;
|
||||
|
||||
case RTLTOOL_READ_ERI:
|
||||
my_cmd.data = 0;
|
||||
if (my_cmd.len==1 || my_cmd.len==2 || my_cmd.len==4) {
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
my_cmd.data = rtl8125_eri_read(tp, my_cmd.offset, my_cmd.len, ERIAR_ExGMAC);
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
} else {
|
||||
ret = -EOPNOTSUPP;
|
||||
break;
|
||||
@ -167,9 +154,7 @@ int rtl8125_tool_ioctl(struct rtl8125_private *tp, struct ifreq *ifr)
|
||||
return -EPERM;
|
||||
|
||||
if (my_cmd.len==1 || my_cmd.len==2 || my_cmd.len==4) {
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
rtl8125_eri_write(tp, my_cmd.offset, my_cmd.len, my_cmd.data, ERIAR_ExGMAC);
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
} else {
|
||||
ret = -EOPNOTSUPP;
|
||||
break;
|
||||
@ -225,10 +210,7 @@ int rtl8125_tool_ioctl(struct rtl8125_private *tp, struct ifreq *ifr)
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
my_cmd.data = rtl8125_eeprom_read_sc(tp, my_cmd.offset);
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
|
||||
if (copy_to_user(ifr->ifr_data, &my_cmd, sizeof(my_cmd))) {
|
||||
ret = -EFAULT;
|
||||
break;
|
||||
@ -240,21 +222,16 @@ int rtl8125_tool_ioctl(struct rtl8125_private *tp, struct ifreq *ifr)
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
rtl8125_eeprom_write_sc(tp, my_cmd.offset, my_cmd.data);
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
break;
|
||||
|
||||
case RTL_READ_OOB_MAC:
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
rtl8125_oob_mutex_lock(tp);
|
||||
my_cmd.data = rtl8125_ocp_read(tp, my_cmd.offset, 4);
|
||||
rtl8125_oob_mutex_unlock(tp);
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
|
||||
if (copy_to_user(ifr->ifr_data, &my_cmd, sizeof(my_cmd))) {
|
||||
ret = -EFAULT;
|
||||
break;
|
||||
@ -268,20 +245,16 @@ int rtl8125_tool_ioctl(struct rtl8125_private *tp, struct ifreq *ifr)
|
||||
if (my_cmd.len == 0 || my_cmd.len > 4)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
rtl8125_oob_mutex_lock(tp);
|
||||
rtl8125_ocp_write(tp, my_cmd.offset, my_cmd.len, my_cmd.data);
|
||||
rtl8125_oob_mutex_unlock(tp);
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
break;
|
||||
|
||||
case RTL_ENABLE_PCI_DIAG:
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
tp->rtk_enable_diag = 1;
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
|
||||
dprintk("enable rtk diag\n");
|
||||
break;
|
||||
@ -290,9 +263,7 @@ int rtl8125_tool_ioctl(struct rtl8125_private *tp, struct ifreq *ifr)
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
tp->rtk_enable_diag = 0;
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
|
||||
dprintk("disable rtk diag\n");
|
||||
break;
|
||||
@ -304,10 +275,7 @@ int rtl8125_tool_ioctl(struct rtl8125_private *tp, struct ifreq *ifr)
|
||||
if (my_cmd.offset % 2)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
my_cmd.data = rtl8125_mac_ocp_read(tp, my_cmd.offset);
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
|
||||
if (copy_to_user(ifr->ifr_data, &my_cmd, sizeof(my_cmd))) {
|
||||
ret = -EFAULT;
|
||||
break;
|
||||
@ -321,19 +289,14 @@ int rtl8125_tool_ioctl(struct rtl8125_private *tp, struct ifreq *ifr)
|
||||
if ((my_cmd.offset % 2) || (my_cmd.len != 2))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
rtl8125_mac_ocp_write(tp, my_cmd.offset, (u16)my_cmd.data);
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
break;
|
||||
|
||||
case RTL_DIRECT_READ_PHY_OCP:
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
my_cmd.data = rtl8125_mdio_prot_direct_read_phy_ocp(tp, my_cmd.offset);
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
|
||||
if (copy_to_user(ifr->ifr_data, &my_cmd, sizeof(my_cmd))) {
|
||||
ret = -EFAULT;
|
||||
break;
|
||||
@ -345,9 +308,7 @@ int rtl8125_tool_ioctl(struct rtl8125_private *tp, struct ifreq *ifr)
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
spin_lock_irqsave(&tp->lock, flags);
|
||||
rtl8125_mdio_prot_direct_write_phy_ocp(tp, my_cmd.offset, my_cmd.data);
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@ -7,13 +7,14 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=r8168
|
||||
PKG_VERSION:=8.049.01
|
||||
PKG_RELEASE:=1
|
||||
PKG_VERSION:=8.049.02
|
||||
PKG_RELEASE:=$(AUTORELEAE)
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/BROBIRD/openwrt-r8168.git
|
||||
PKG_SOURCE_VERSION:=66fdc44a1f69c4fda18e6f922a234cbaa933ede6
|
||||
PKG_MIRROR_HASH:=a480cf9c70bbc3ee5d9b967e5006ff4fc9bba2bf38638fb2b7567f10b6f41bf3
|
||||
PKG_SOURCE_DATE:=2021-10-08
|
||||
PKG_SOURCE_VERSION:=2b969c15afe403a685fc7ee069620782241e3ad6
|
||||
PKG_MIRROR_HASH:=e4632c10d460f005eff76da8a183d7ff0c8819b0d099872589b7b06a9b8d9952
|
||||
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
#include <linux/if_vlan.h>
|
||||
#include <linux/crc32.h>
|
||||
#include <linux/interrupt.h>
|
||||
@@ -23481,6 +23482,22 @@ rtl8168_set_bios_setting(struct net_device *dev)
|
||||
@@ -23482,6 +23483,22 @@ rtl8168_set_bios_setting(struct net_devi
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
static void
|
||||
rtl8168_init_software_variable(struct net_device *dev)
|
||||
{
|
||||
@@ -23986,6 +24003,8 @@ rtl8168_init_software_variable(struct net_device *dev)
|
||||
@@ -24000,6 +24017,8 @@ rtl8168_init_software_variable(struct ne
|
||||
tp->NotWrMcuPatchCode = TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=6rd
|
||||
PKG_RELEASE:=10
|
||||
PKG_RELEASE:=11
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
@ -82,6 +82,8 @@ proto_6rd_setup() {
|
||||
|
||||
proto_6rd_teardown() {
|
||||
local cfg="$1"
|
||||
local link="6rd-$cfg"
|
||||
ip link del $link
|
||||
}
|
||||
|
||||
proto_6rd_init_config() {
|
||||
|
||||
@ -241,7 +241,7 @@ dhcp_subscrid_add() {
|
||||
config_get subscriberid "$cfg" subscriberid
|
||||
[ -n "$subscriberid" ] || return 0
|
||||
|
||||
xappend "--dhcp-subscrid=$networkid,$subscriberid"
|
||||
xappend "--dhcp-subscrid=set:$networkid,$subscriberid"
|
||||
|
||||
config_get_bool force "$cfg" force 0
|
||||
|
||||
@ -257,7 +257,7 @@ dhcp_remoteid_add() {
|
||||
config_get remoteid "$cfg" remoteid
|
||||
[ -n "$remoteid" ] || return 0
|
||||
|
||||
xappend "--dhcp-remoteid=$networkid,$remoteid"
|
||||
xappend "--dhcp-remoteid=set:$networkid,$remoteid"
|
||||
|
||||
config_get_bool force "$cfg" force 0
|
||||
|
||||
@ -274,7 +274,7 @@ dhcp_circuitid_add() {
|
||||
config_get circuitid "$cfg" circuitid
|
||||
[ -n "$circuitid" ] || return 0
|
||||
|
||||
xappend "--dhcp-circuitid=$networkid,$circuitid"
|
||||
xappend "--dhcp-circuitid=set:$networkid,$circuitid"
|
||||
|
||||
config_get_bool force "$cfg" force 0
|
||||
|
||||
@ -290,7 +290,7 @@ dhcp_userclass_add() {
|
||||
config_get userclass "$cfg" userclass
|
||||
[ -n "$userclass" ] || return 0
|
||||
|
||||
xappend "--dhcp-userclass=$networkid,$userclass"
|
||||
xappend "--dhcp-userclass=set:$networkid,$userclass"
|
||||
|
||||
config_get_bool force "$cfg" force 0
|
||||
|
||||
@ -307,7 +307,7 @@ dhcp_vendorclass_add() {
|
||||
config_get vendorclass "$cfg" vendorclass
|
||||
[ -n "$vendorclass" ] || return 0
|
||||
|
||||
xappend "--dhcp-vendorclass=$networkid,$vendorclass"
|
||||
xappend "--dhcp-vendorclass=set:$networkid,$vendorclass"
|
||||
|
||||
config_get_bool force "$cfg" force 0
|
||||
|
||||
@ -323,7 +323,7 @@ dhcp_match_add() {
|
||||
config_get match "$cfg" match
|
||||
[ -n "$match" ] || return 0
|
||||
|
||||
xappend "--dhcp-match=$networkid,$match"
|
||||
xappend "--dhcp-match=set:$networkid,$match"
|
||||
|
||||
config_get_bool force "$cfg" force 0
|
||||
|
||||
|
||||
20
package/network/utils/bpftools/patches/006-musl-120.patch
Normal file
20
package/network/utils/bpftools/patches/006-musl-120.patch
Normal file
@ -0,0 +1,20 @@
|
||||
--- a/tools/bpf/bpftool/btf_dumper.c
|
||||
+++ b/tools/bpf/bpftool/btf_dumper.c
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <stdio.h> /* for (FILE *) used by json_writer */
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
+#include <linux/compiler.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/btf.h>
|
||||
--- a/tools/bpf/bpftool/map_perf_ring.c
|
||||
+++ b/tools/bpf/bpftool/map_perf_ring.c
|
||||
@@ -16,6 +16,7 @@
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <linux/bpf.h>
|
||||
+#include <linux/compiler.h>
|
||||
#include <linux/perf_event.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/mman.h>
|
||||
@ -11,12 +11,12 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=wireguard-tools
|
||||
|
||||
PKG_VERSION:=1.0.20210424
|
||||
PKG_VERSION:=1.0.20210914
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=wireguard-tools-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=https://git.zx2c4.com/wireguard-tools/snapshot/
|
||||
PKG_HASH:=b288b0c43871d919629d7e77846ef0b47f8eeaa9ebc9cedeee8233fc6cc376ad
|
||||
PKG_HASH:=97ff31489217bb265b7ae850d3d0f335ab07d2652ba1feec88b734bc96bd05ac
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# (C) 2013 openwrt.org
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2013-2020 OpenWrt.org
|
||||
|
||||
START=40
|
||||
START=11
|
||||
|
||||
boot() {
|
||||
/sbin/block mount
|
||||
|
||||
@ -0,0 +1,32 @@
|
||||
From 5345343828df944ae247d91cc77182f87559bc9a Mon Sep 17 00:00:00 2001
|
||||
From: Rosen Penev <rosenp@gmail.com>
|
||||
Date: Wed, 25 Mar 2020 16:27:47 -0700
|
||||
Subject: [PATCH] fstoools: add define for GLOB_ONLYDIR
|
||||
|
||||
This was originally a patch for musl. It is not present in musl as it is a
|
||||
GNU extension.
|
||||
|
||||
Place it here where it belongs.
|
||||
|
||||
Signed-off-by: Rosen Penev <rosenp@gmail.com>
|
||||
---
|
||||
libfstools/overlay.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/libfstools/overlay.c b/libfstools/overlay.c
|
||||
index 14214a3..39215d5 100644
|
||||
--- a/libfstools/overlay.c
|
||||
+++ b/libfstools/overlay.c
|
||||
@@ -30,6 +30,10 @@
|
||||
#include "libfstools.h"
|
||||
#include "volume.h"
|
||||
|
||||
+#ifndef GLOB_ONLYDIR
|
||||
+#define GLOB_ONLYDIR 0x100
|
||||
+#endif
|
||||
+
|
||||
#define SWITCH_JFFS2 "/tmp/.switch_jffs2"
|
||||
|
||||
static bool keep_sysupgrade;
|
||||
--
|
||||
2.20.1
|
||||
@ -5,14 +5,14 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=busybox
|
||||
PKG_VERSION:=1.34.0
|
||||
PKG_VERSION:=1.34.1
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
PKG_FLAGS:=essential
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=https://www.busybox.net/downloads \
|
||||
http://sources.buildroot.net
|
||||
PKG_HASH:=ec8d1615edb045b83b81966604759c4d4ac921434ab4011da604f629c06074ce
|
||||
PKG_HASH:=415fbd89e5344c96acf449d94a6f956dbed62e18e835fc83e064db33a34bd549
|
||||
|
||||
PKG_BUILD_DEPENDS:=BUSYBOX_CONFIG_PAM:libpam
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
@ -1,37 +0,0 @@
|
||||
From 00adcdb64a5487f0ea6b400d912dcf7c58637696 Mon Sep 17 00:00:00 2001
|
||||
From: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Date: Fri, 20 Aug 2021 13:33:50 +0200
|
||||
Subject: udhcp: fix build breakage on MIPS
|
||||
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
---
|
||||
networking/udhcp/common.h | 12 ------------
|
||||
1 file changed, 12 deletions(-)
|
||||
|
||||
diff --git a/networking/udhcp/common.h b/networking/udhcp/common.h
|
||||
index 8c678dd32..ca778dab8 100644
|
||||
--- a/networking/udhcp/common.h
|
||||
+++ b/networking/udhcp/common.h
|
||||
@@ -304,18 +304,6 @@ void udhcp_dump_packet(struct dhcp_packet *packet) FAST_FUNC;
|
||||
# define log3s(msg) ((void)0)
|
||||
#endif
|
||||
|
||||
-#if defined(__mips__)
|
||||
-/*
|
||||
- * The 'simple' message functions have a negative impact on the size of the
|
||||
- * DHCP code when compiled for MIPS, so don't use them in this case.
|
||||
- */
|
||||
-#define bb_simple_info_msg bb_info_msg
|
||||
-#define bb_simple_error_msg bb_error_msg
|
||||
-#define bb_simple_perror_msg_and_die bb_perror_msg_and_die
|
||||
-#undef log1s
|
||||
-#define log1s log1
|
||||
-#endif
|
||||
-
|
||||
/*** Other shared functions ***/
|
||||
|
||||
/* 2nd param is "uint32_t*" */
|
||||
--
|
||||
cgit v1.2.3
|
||||
|
||||
|
||||
@ -1,77 +0,0 @@
|
||||
Stacy Harper reports that this script:
|
||||
|
||||
test() { . /tmp/bb_test; }
|
||||
echo "export TEST=foo" >/tmp/bb_test
|
||||
test 2>/dev/null
|
||||
echo "$TEST"
|
||||
|
||||
correctly prints 'foo' in BusyBox 1.33 but hangs in 1.34.
|
||||
|
||||
Bisection suggested the problem was caused by commit a1b0d3856 (ash: add
|
||||
process substitution in bash-compatibility mode). Removing the call to
|
||||
unwindredir() in cmdloop() introduced in that commit makes the script
|
||||
work again.
|
||||
|
||||
Additionally, these examples of process substitution:
|
||||
|
||||
while true; do cat <(echo hi); done
|
||||
f() { while true; do cat <(echo hi); done }
|
||||
f
|
||||
|
||||
result in running out of file descriptors. This is a regression from
|
||||
v5 of the process substitution patch caused by changes to evalcommand()
|
||||
not being transferred to v6.
|
||||
|
||||
function old new delta
|
||||
static.pushredir - 99 +99
|
||||
evalcommand 1729 1750 +21
|
||||
exitreset 69 86 +17
|
||||
cmdloop 372 365 -7
|
||||
unwindredir 28 - -28
|
||||
pushredir 112 - -112
|
||||
------------------------------------------------------------------------------
|
||||
(add/remove: 1/2 grow/shrink: 2/1 up/down: 137/-147) Total: -10 bytes
|
||||
|
||||
Signed-off-by: Ron Yorston <rmy at pobox.com>
|
||||
---
|
||||
shell/ash.c | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/shell/ash.c b/shell/ash.c
|
||||
index b5947147a..53c140930 100644
|
||||
--- a/shell/ash.c
|
||||
+++ b/shell/ash.c
|
||||
@@ -10278,6 +10278,9 @@ evalcommand(union node *cmd, int flags)
|
||||
|
||||
/* First expand the arguments. */
|
||||
TRACE(("evalcommand(0x%lx, %d) called\n", (long)cmd, flags));
|
||||
+#if BASH_PROCESS_SUBST
|
||||
+ redir_stop = redirlist;
|
||||
+#endif
|
||||
file_stop = g_parsefile;
|
||||
back_exitstatus = 0;
|
||||
|
||||
@@ -10356,7 +10359,11 @@ evalcommand(union node *cmd, int flags)
|
||||
lastarg = nargv[-1];
|
||||
|
||||
expredir(cmd->ncmd.redirect);
|
||||
+#if !BASH_PROCESS_SUBST
|
||||
redir_stop = pushredir(cmd->ncmd.redirect);
|
||||
+#else
|
||||
+ pushredir(cmd->ncmd.redirect);
|
||||
+#endif
|
||||
preverrout_fd = 2;
|
||||
if (BASH_XTRACEFD && xflag) {
|
||||
/* NB: bash closes fd == $BASH_XTRACEFD when it is changed.
|
||||
@@ -13476,9 +13483,6 @@ cmdloop(int top)
|
||||
#if JOBS
|
||||
if (doing_jobctl)
|
||||
showjobs(SHOW_CHANGED|SHOW_STDERR);
|
||||
-#endif
|
||||
-#if BASH_PROCESS_SUBST
|
||||
- unwindredir(NULL);
|
||||
#endif
|
||||
inter = 0;
|
||||
if (iflag && top) {
|
||||
--
|
||||
2.31.1
|
||||
@ -102,7 +102,7 @@ menu "Advanced configuration options (for developers)"
|
||||
|
||||
config CCACHE
|
||||
bool "Use ccache"
|
||||
default y
|
||||
default n
|
||||
help
|
||||
Compiler cache; see https://ccache.samba.org/
|
||||
|
||||
|
||||
@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/target.mk
|
||||
|
||||
PKG_NAME:=musl
|
||||
PKG_VERSION:=1.1.24
|
||||
PKG_RELEASE:=3
|
||||
PKG_VERSION:=1.2.2
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://musl.libc.org/releases/
|
||||
PKG_HASH:=1370c9a812b2cf2a7d92802510cca0058cc37e66a7bedd70051f0a34015022a3
|
||||
PKG_HASH:=9b969322012d796dc23dda27a35866034fa67d8fb67e0e2c45c913c3d43219dd
|
||||
|
||||
LIBC_SO_VERSION:=$(PKG_VERSION)
|
||||
PATCH_DIR:=$(PATH_PREFIX)/patches
|
||||
|
||||
@ -1 +0,0 @@
|
||||
#include <sys/user.h>
|
||||
@ -1,48 +0,0 @@
|
||||
#ifndef _FEATURES_H
|
||||
#define _FEATURES_H
|
||||
|
||||
#ifdef _ALL_SOURCE
|
||||
#define _GNU_SOURCE 1
|
||||
#endif
|
||||
|
||||
#if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) \
|
||||
&& !defined(_XOPEN_SOURCE) && !defined(_GNU_SOURCE) \
|
||||
&& !defined(_BSD_SOURCE) && !defined(__STRICT_ANSI__)
|
||||
#define _BSD_SOURCE 1
|
||||
#define _XOPEN_SOURCE 700
|
||||
#endif
|
||||
|
||||
#if __STDC_VERSION__ >= 199901L
|
||||
#define __restrict restrict
|
||||
#elif !defined(__GNUC__)
|
||||
#define __restrict
|
||||
#endif
|
||||
|
||||
#if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
|
||||
#define __inline inline
|
||||
#endif
|
||||
|
||||
#if __STDC_VERSION__ >= 201112L
|
||||
#elif defined(__GNUC__)
|
||||
#define _Noreturn __attribute__((__noreturn__))
|
||||
#else
|
||||
#define _Noreturn
|
||||
#endif
|
||||
|
||||
/* Convenience macros to test the versions of glibc and gcc.
|
||||
Use them like this:
|
||||
#if __GNUC_PREREQ (2,8)
|
||||
... code requiring gcc 2.8 or later ...
|
||||
#endif
|
||||
Note - they won't work for gcc1 or glibc1, since the _MINOR macros
|
||||
were not defined then. */
|
||||
#if defined __GNUC__ && defined __GNUC_MINOR__
|
||||
# define __GNUC_PREREQ(maj, min) \
|
||||
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
|
||||
#else
|
||||
# define __GNUC_PREREQ(maj, min) 0
|
||||
#endif
|
||||
|
||||
#include <sys/glibc-types.h>
|
||||
|
||||
#endif
|
||||
@ -1,73 +0,0 @@
|
||||
/* Copyright (C) 1996, 1997, 1998, 2003, 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ralf Baechle <ralf@gnu.org>.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#ifndef _SGIDEFS_H
|
||||
#define _SGIDEFS_H 1
|
||||
|
||||
/*
|
||||
* A crude hack to stop <asm/sgidefs.h>
|
||||
*/
|
||||
#undef __ASM_SGIDEFS_H
|
||||
#define __ASM_SGIDEFS_H
|
||||
|
||||
/*
|
||||
* And remove any damage it might have already done
|
||||
*/
|
||||
#undef _MIPS_ISA_MIPS1
|
||||
#undef _MIPS_ISA_MIPS2
|
||||
#undef _MIPS_ISA_MIPS3
|
||||
#undef _MIPS_ISA_MIPS4
|
||||
#undef _MIPS_ISA_MIPS5
|
||||
#undef _MIPS_ISA_MIPS32
|
||||
#undef _MIPS_ISA_MIPS64
|
||||
|
||||
#undef _MIPS_SIM_ABI32
|
||||
#undef _MIPS_SIM_NABI32
|
||||
#undef _MIPS_SIM_ABI64
|
||||
|
||||
/*
|
||||
* Definitions for the ISA level
|
||||
*/
|
||||
#define _MIPS_ISA_MIPS1 1
|
||||
#define _MIPS_ISA_MIPS2 2
|
||||
#define _MIPS_ISA_MIPS3 3
|
||||
#define _MIPS_ISA_MIPS4 4
|
||||
#define _MIPS_ISA_MIPS5 5
|
||||
#define _MIPS_ISA_MIPS32 6
|
||||
#define _MIPS_ISA_MIPS64 7
|
||||
|
||||
/*
|
||||
* Subprogram calling convention
|
||||
*/
|
||||
#ifndef _ABIO32
|
||||
# define _ABIO32 1
|
||||
#endif
|
||||
#define _MIPS_SIM_ABI32 _ABIO32
|
||||
|
||||
#ifndef _ABIN32
|
||||
# define _ABIN32 2
|
||||
#endif
|
||||
#define _MIPS_SIM_NABI32 _ABIN32
|
||||
|
||||
#ifndef _ABI64
|
||||
# define _ABI64 3
|
||||
#endif
|
||||
#define _MIPS_SIM_ABI64 _ABI64
|
||||
|
||||
#endif /* sgidefs.h */
|
||||
@ -1,378 +0,0 @@
|
||||
/* Copyright (C) 1992-2002, 2004, 2005, 2006, 2007, 2009, 2011, 2012
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SYS_CDEFS_H
|
||||
#define _SYS_CDEFS_H 1
|
||||
|
||||
/* We are almost always included from features.h. */
|
||||
#ifndef _FEATURES_H
|
||||
# include <features.h>
|
||||
#endif
|
||||
|
||||
/* The GNU libc does not support any K&R compilers or the traditional mode
|
||||
of ISO C compilers anymore. Check for some of the combinations not
|
||||
anymore supported. */
|
||||
#if defined __GNUC__ && !defined __STDC__
|
||||
# error "You need a ISO C conforming compiler to use the glibc headers"
|
||||
#endif
|
||||
|
||||
/* Some user header file might have defined this before. */
|
||||
#undef __P
|
||||
#undef __PMT
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
/* All functions, except those with callbacks or those that
|
||||
synchronize memory, are leaf functions. */
|
||||
# if __GNUC_PREREQ (4, 6) && !defined _LIBC
|
||||
# define __LEAF , __leaf__
|
||||
# define __LEAF_ATTR __attribute__ ((__leaf__))
|
||||
# else
|
||||
# define __LEAF
|
||||
# define __LEAF_ATTR
|
||||
# endif
|
||||
|
||||
/* GCC can always grok prototypes. For C++ programs we add throw()
|
||||
to help it optimize the function calls. But this works only with
|
||||
gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions
|
||||
as non-throwing using a function attribute since programs can use
|
||||
the -fexceptions options for C code as well. */
|
||||
# if !defined __cplusplus && __GNUC_PREREQ (3, 3)
|
||||
# define __THROW __attribute__ ((__nothrow__ __LEAF))
|
||||
# define __THROWNL __attribute__ ((__nothrow__))
|
||||
# define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
|
||||
# else
|
||||
# if defined __cplusplus && __GNUC_PREREQ (2,8)
|
||||
# define __THROW throw ()
|
||||
# define __THROWNL throw ()
|
||||
# define __NTH(fct) __LEAF_ATTR fct throw ()
|
||||
# else
|
||||
# define __THROW
|
||||
# define __THROWNL
|
||||
# define __NTH(fct) fct
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#else /* Not GCC. */
|
||||
|
||||
# define __inline /* No inline functions. */
|
||||
|
||||
# define __THROW
|
||||
# define __THROWNL
|
||||
# define __NTH(fct) fct
|
||||
|
||||
#endif /* GCC. */
|
||||
|
||||
/* These two macros are not used in glibc anymore. They are kept here
|
||||
only because some other projects expect the macros to be defined. */
|
||||
#define __P(args) args
|
||||
#define __PMT(args) args
|
||||
|
||||
/* For these things, GCC behaves the ANSI way normally,
|
||||
and the non-ANSI way under -traditional. */
|
||||
|
||||
#define __CONCAT(x,y) x ## y
|
||||
#define __STRING(x) #x
|
||||
|
||||
/* This is not a typedef so `const __ptr_t' does the right thing. */
|
||||
#define __ptr_t void *
|
||||
#define __long_double_t long double
|
||||
|
||||
|
||||
/* C++ needs to know that types and declarations are C, not C++. */
|
||||
#ifdef __cplusplus
|
||||
# define __BEGIN_DECLS extern "C" {
|
||||
# define __END_DECLS }
|
||||
#else
|
||||
# define __BEGIN_DECLS
|
||||
# define __END_DECLS
|
||||
#endif
|
||||
|
||||
|
||||
/* The standard library needs the functions from the ISO C90 standard
|
||||
in the std namespace. At the same time we want to be safe for
|
||||
future changes and we include the ISO C99 code in the non-standard
|
||||
namespace __c99. The C++ wrapper header take case of adding the
|
||||
definitions to the global namespace. */
|
||||
#if defined __cplusplus && defined _GLIBCPP_USE_NAMESPACES
|
||||
# define __BEGIN_NAMESPACE_STD namespace std {
|
||||
# define __END_NAMESPACE_STD }
|
||||
# define __USING_NAMESPACE_STD(name) using std::name;
|
||||
# define __BEGIN_NAMESPACE_C99 namespace __c99 {
|
||||
# define __END_NAMESPACE_C99 }
|
||||
# define __USING_NAMESPACE_C99(name) using __c99::name;
|
||||
#else
|
||||
/* For compatibility we do not add the declarations into any
|
||||
namespace. They will end up in the global namespace which is what
|
||||
old code expects. */
|
||||
# define __BEGIN_NAMESPACE_STD
|
||||
# define __END_NAMESPACE_STD
|
||||
# define __USING_NAMESPACE_STD(name)
|
||||
# define __BEGIN_NAMESPACE_C99
|
||||
# define __END_NAMESPACE_C99
|
||||
# define __USING_NAMESPACE_C99(name)
|
||||
#endif
|
||||
|
||||
|
||||
/* Support for bounded pointers. */
|
||||
#ifndef __BOUNDED_POINTERS__
|
||||
# define __bounded /* nothing */
|
||||
# define __unbounded /* nothing */
|
||||
# define __ptrvalue /* nothing */
|
||||
#endif
|
||||
|
||||
|
||||
/* Fortify support. */
|
||||
#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
|
||||
#define __bos0(ptr) __builtin_object_size (ptr, 0)
|
||||
#define __fortify_function __extern_always_inline __attribute_artificial__
|
||||
|
||||
#if __GNUC_PREREQ (4,3)
|
||||
# define __warndecl(name, msg) \
|
||||
extern void name (void) __attribute__((__warning__ (msg)))
|
||||
# define __warnattr(msg) __attribute__((__warning__ (msg)))
|
||||
# define __errordecl(name, msg) \
|
||||
extern void name (void) __attribute__((__error__ (msg)))
|
||||
#else
|
||||
# define __warndecl(name, msg) extern void name (void)
|
||||
# define __warnattr(msg)
|
||||
# define __errordecl(name, msg) extern void name (void)
|
||||
#endif
|
||||
|
||||
/* Support for flexible arrays. */
|
||||
#if __GNUC_PREREQ (2,97)
|
||||
/* GCC 2.97 supports C99 flexible array members. */
|
||||
# define __flexarr []
|
||||
#else
|
||||
# ifdef __GNUC__
|
||||
# define __flexarr [0]
|
||||
# else
|
||||
# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
|
||||
# define __flexarr []
|
||||
# else
|
||||
/* Some other non-C99 compiler. Approximate with [1]. */
|
||||
# define __flexarr [1]
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
/* __asm__ ("xyz") is used throughout the headers to rename functions
|
||||
at the assembly language level. This is wrapped by the __REDIRECT
|
||||
macro, in order to support compilers that can do this some other
|
||||
way. When compilers don't support asm-names at all, we have to do
|
||||
preprocessor tricks instead (which don't have exactly the right
|
||||
semantics, but it's the best we can do).
|
||||
|
||||
Example:
|
||||
int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */
|
||||
|
||||
#if defined __GNUC__ && __GNUC__ >= 2
|
||||
|
||||
# define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias))
|
||||
# ifdef __cplusplus
|
||||
# define __REDIRECT_NTH(name, proto, alias) \
|
||||
name proto __THROW __asm__ (__ASMNAME (#alias))
|
||||
# define __REDIRECT_NTHNL(name, proto, alias) \
|
||||
name proto __THROWNL __asm__ (__ASMNAME (#alias))
|
||||
# else
|
||||
# define __REDIRECT_NTH(name, proto, alias) \
|
||||
name proto __asm__ (__ASMNAME (#alias)) __THROW
|
||||
# define __REDIRECT_NTHNL(name, proto, alias) \
|
||||
name proto __asm__ (__ASMNAME (#alias)) __THROWNL
|
||||
# endif
|
||||
# define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
|
||||
# define __ASMNAME2(prefix, cname) __STRING (prefix) cname
|
||||
|
||||
/*
|
||||
#elif __SOME_OTHER_COMPILER__
|
||||
|
||||
# define __REDIRECT(name, proto, alias) name proto; \
|
||||
_Pragma("let " #name " = " #alias)
|
||||
*/
|
||||
#endif
|
||||
|
||||
/* GCC has various useful declarations that can be made with the
|
||||
`__attribute__' syntax. All of the ways we use this do fine if
|
||||
they are omitted for compilers that don't understand it. */
|
||||
#if !defined __GNUC__ || __GNUC__ < 2
|
||||
# define __attribute__(xyz) /* Ignore */
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 2.96 development the `malloc' attribute
|
||||
for functions was introduced. We don't want to use it unconditionally
|
||||
(although this would be possible) since it generates warnings. */
|
||||
#if __GNUC_PREREQ (2,96)
|
||||
# define __attribute_malloc__ __attribute__ ((__malloc__))
|
||||
#else
|
||||
# define __attribute_malloc__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 2.96 development the `pure' attribute
|
||||
for functions was introduced. We don't want to use it unconditionally
|
||||
(although this would be possible) since it generates warnings. */
|
||||
#if __GNUC_PREREQ (2,96)
|
||||
# define __attribute_pure__ __attribute__ ((__pure__))
|
||||
#else
|
||||
# define __attribute_pure__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* This declaration tells the compiler that the value is constant. */
|
||||
#if __GNUC_PREREQ (2,5)
|
||||
# define __attribute_const__ __attribute__ ((__const__))
|
||||
#else
|
||||
# define __attribute_const__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 3.1 development the `used' attribute
|
||||
for functions was introduced. We don't want to use it unconditionally
|
||||
(although this would be possible) since it generates warnings. */
|
||||
#if __GNUC_PREREQ (3,1)
|
||||
# define __attribute_used__ __attribute__ ((__used__))
|
||||
# define __attribute_noinline__ __attribute__ ((__noinline__))
|
||||
#else
|
||||
# define __attribute_used__ __attribute__ ((__unused__))
|
||||
# define __attribute_noinline__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* gcc allows marking deprecated functions. */
|
||||
#if __GNUC_PREREQ (3,2)
|
||||
# define __attribute_deprecated__ __attribute__ ((__deprecated__))
|
||||
#else
|
||||
# define __attribute_deprecated__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 2.8 development the `format_arg' attribute
|
||||
for functions was introduced. We don't want to use it unconditionally
|
||||
(although this would be possible) since it generates warnings.
|
||||
If several `format_arg' attributes are given for the same function, in
|
||||
gcc-3.0 and older, all but the last one are ignored. In newer gccs,
|
||||
all designated arguments are considered. */
|
||||
#if __GNUC_PREREQ (2,8)
|
||||
# define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
|
||||
#else
|
||||
# define __attribute_format_arg__(x) /* Ignore */
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 2.97 development the `strfmon' format
|
||||
attribute for functions was introduced. We don't want to use it
|
||||
unconditionally (although this would be possible) since it
|
||||
generates warnings. */
|
||||
#if __GNUC_PREREQ (2,97)
|
||||
# define __attribute_format_strfmon__(a,b) \
|
||||
__attribute__ ((__format__ (__strfmon__, a, b)))
|
||||
#else
|
||||
# define __attribute_format_strfmon__(a,b) /* Ignore */
|
||||
#endif
|
||||
|
||||
/* The nonull function attribute allows to mark pointer parameters which
|
||||
must not be NULL. */
|
||||
#if __GNUC_PREREQ (3,3)
|
||||
# define __nonnull(params) __attribute__ ((__nonnull__ params))
|
||||
#else
|
||||
# define __nonnull(params)
|
||||
#endif
|
||||
|
||||
/* If fortification mode, we warn about unused results of certain
|
||||
function calls which can lead to problems. */
|
||||
#if __GNUC_PREREQ (3,4)
|
||||
# define __attribute_warn_unused_result__ \
|
||||
__attribute__ ((__warn_unused_result__))
|
||||
# if __USE_FORTIFY_LEVEL > 0
|
||||
# define __wur __attribute_warn_unused_result__
|
||||
# endif
|
||||
#else
|
||||
# define __attribute_warn_unused_result__ /* empty */
|
||||
#endif
|
||||
#ifndef __wur
|
||||
# define __wur /* Ignore */
|
||||
#endif
|
||||
|
||||
/* Forces a function to be always inlined. */
|
||||
#if __GNUC_PREREQ (3,2)
|
||||
# define __always_inline __inline __attribute__ ((__always_inline__))
|
||||
#else
|
||||
# define __always_inline __inline
|
||||
#endif
|
||||
|
||||
/* Associate error messages with the source location of the call site rather
|
||||
than with the source location inside the function. */
|
||||
#if __GNUC_PREREQ (4,3)
|
||||
# define __attribute_artificial__ __attribute__ ((__artificial__))
|
||||
#else
|
||||
# define __attribute_artificial__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
|
||||
inline semantics, unless -fgnu89-inline is used. */
|
||||
#if !defined __cplusplus || __GNUC_PREREQ (4,3)
|
||||
# if defined __GNUC_STDC_INLINE__ || defined __cplusplus
|
||||
# define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
|
||||
# define __extern_always_inline \
|
||||
extern __always_inline __attribute__ ((__gnu_inline__))
|
||||
# else
|
||||
# define __extern_inline extern __inline
|
||||
# define __extern_always_inline extern __always_inline
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* GCC 4.3 and above allow passing all anonymous arguments of an
|
||||
__extern_always_inline function to some other vararg function. */
|
||||
#if __GNUC_PREREQ (4,3)
|
||||
# define __va_arg_pack() __builtin_va_arg_pack ()
|
||||
# define __va_arg_pack_len() __builtin_va_arg_pack_len ()
|
||||
#endif
|
||||
|
||||
/* It is possible to compile containing GCC extensions even if GCC is
|
||||
run in pedantic mode if the uses are carefully marked using the
|
||||
`__extension__' keyword. But this is not generally available before
|
||||
version 2.8. */
|
||||
#if !__GNUC_PREREQ (2,8)
|
||||
# define __extension__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* __restrict is known in EGCS 1.2 and above. */
|
||||
#if !__GNUC_PREREQ (2,92)
|
||||
# define __restrict /* Ignore */
|
||||
#endif
|
||||
|
||||
/* ISO C99 also allows to declare arrays as non-overlapping. The syntax is
|
||||
array_name[restrict]
|
||||
GCC 3.1 supports this. */
|
||||
#if __GNUC_PREREQ (3,1) && !defined __GNUG__
|
||||
# define __restrict_arr __restrict
|
||||
#else
|
||||
# ifdef __GNUC__
|
||||
# define __restrict_arr /* Not supported in old GCC. */
|
||||
# else
|
||||
# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
|
||||
# define __restrict_arr restrict
|
||||
# else
|
||||
/* Some other non-C99 compiler. */
|
||||
# define __restrict_arr /* Not supported. */
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if __GNUC__ >= 3
|
||||
# define __glibc_unlikely(cond) __builtin_expect((cond), 0)
|
||||
#else
|
||||
# define __glibc_unlikely(cond) (cond)
|
||||
#endif
|
||||
|
||||
#endif /* sys/cdefs.h */
|
||||
@ -1,35 +0,0 @@
|
||||
#ifndef __MUSL_GLIBC_TYPES_H
|
||||
#define __MUSL_GLIBC_TYPES_H
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
/* Convenience types. */
|
||||
typedef unsigned char __u_char;
|
||||
typedef unsigned short int __u_short;
|
||||
typedef unsigned int __u_int;
|
||||
typedef unsigned long int __u_long;
|
||||
|
||||
/* Fixed-size types, underlying types depend on word size and compiler. */
|
||||
typedef signed char __int8_t;
|
||||
typedef unsigned char __uint8_t;
|
||||
typedef signed short int __int16_t;
|
||||
typedef unsigned short int __uint16_t;
|
||||
typedef signed int __int32_t;
|
||||
typedef unsigned int __uint32_t;
|
||||
#if __WORDSIZE == 64
|
||||
typedef signed long int __int64_t;
|
||||
typedef unsigned long int __uint64_t;
|
||||
#else
|
||||
__extension__ typedef signed long long int __int64_t;
|
||||
__extension__ typedef unsigned long long int __uint64_t;
|
||||
#endif
|
||||
|
||||
#define __off64_t off_t
|
||||
#define __loff_t off_t
|
||||
typedef char *__caddr_t;
|
||||
#define __locale_t locale_t
|
||||
|
||||
#define __gid_t gid_t
|
||||
#define __uid_t uid_t
|
||||
|
||||
#endif
|
||||
@ -1,11 +0,0 @@
|
||||
--- a/include/glob.h
|
||||
+++ b/include/glob.h
|
||||
@@ -34,6 +34,8 @@ void globfree(glob_t *);
|
||||
#define GLOB_TILDE 0x1000
|
||||
#define GLOB_TILDE_CHECK 0x4000
|
||||
|
||||
+#define GLOB_ONLYDIR 0x100
|
||||
+
|
||||
#define GLOB_NOSPACE 1
|
||||
#define GLOB_ABORTED 2
|
||||
#define GLOB_NOMATCH 3
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/src/time/__tz.c
|
||||
+++ b/src/time/__tz.c
|
||||
@@ -25,6 +25,9 @@ static int r0[5], r1[5];
|
||||
@@ -31,6 +31,9 @@ static int r0[5], r1[5];
|
||||
static const unsigned char *zi, *trans, *index, *types, *abbrevs, *abbrevs_end;
|
||||
static size_t map_size;
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
static char old_tz_buf[32];
|
||||
static char *old_tz = old_tz_buf;
|
||||
static size_t old_tz_size = sizeof old_tz_buf;
|
||||
@@ -125,6 +128,15 @@ static void do_tzset()
|
||||
@@ -132,6 +135,15 @@ static void do_tzset()
|
||||
"/usr/share/zoneinfo/\0/share/zoneinfo/\0/etc/zoneinfo/\0";
|
||||
|
||||
s = getenv("TZ");
|
||||
|
||||
@ -7,7 +7,7 @@ Signed-off-by: Steven Barth <steven@midlink.org>
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -66,7 +66,7 @@ CRT_LIBS = $(addprefix lib/,$(notdir $(C
|
||||
@@ -67,7 +67,7 @@ CRT_LIBS = $(addprefix lib/,$(notdir $(C
|
||||
STATIC_LIBS = lib/libc.a
|
||||
SHARED_LIBS = lib/libc.so
|
||||
TOOL_LIBS = lib/musl-gcc.specs
|
||||
@ -16,7 +16,7 @@ Signed-off-by: Steven Barth <steven@midlink.org>
|
||||
ALL_TOOLS = obj/musl-gcc
|
||||
|
||||
WRAPCC_GCC = gcc
|
||||
@@ -86,7 +86,7 @@ else
|
||||
@@ -88,7 +88,7 @@ else
|
||||
|
||||
all: $(ALL_LIBS) $(ALL_TOOLS)
|
||||
|
||||
@ -25,7 +25,7 @@ Signed-off-by: Steven Barth <steven@midlink.org>
|
||||
|
||||
$(ALL_LIBS) $(ALL_TOOLS) $(ALL_OBJS) $(ALL_OBJS:%.o=%.lo) $(GENH) $(GENH_INT): | $(OBJ_DIRS)
|
||||
|
||||
@@ -113,6 +113,8 @@ obj/crt/rcrt1.o: $(srcdir)/ldso/dlstart.
|
||||
@@ -115,6 +115,8 @@ obj/crt/rcrt1.o: $(srcdir)/ldso/dlstart.
|
||||
|
||||
obj/crt/Scrt1.o obj/crt/rcrt1.o: CFLAGS_ALL += -fPIC
|
||||
|
||||
@ -34,7 +34,7 @@ Signed-off-by: Steven Barth <steven@midlink.org>
|
||||
OPTIMIZE_SRCS = $(wildcard $(OPTIMIZE_GLOBS:%=$(srcdir)/src/%))
|
||||
$(OPTIMIZE_SRCS:$(srcdir)/%.c=obj/%.o) $(OPTIMIZE_SRCS:$(srcdir)/%.c=obj/%.lo): CFLAGS += -O3
|
||||
|
||||
@@ -165,6 +167,11 @@ lib/libc.a: $(AOBJS)
|
||||
@@ -167,6 +169,11 @@ lib/libc.a: $(AOBJS)
|
||||
$(AR) rc $@ $(AOBJS)
|
||||
$(RANLIB) $@
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -215,7 +215,7 @@ $(DESTDIR)$(includedir)/%: $(srcdir)/inc
|
||||
@@ -217,7 +217,7 @@ $(DESTDIR)$(includedir)/%: $(srcdir)/inc
|
||||
$(INSTALL) -D -m 644 $< $@
|
||||
|
||||
$(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so
|
||||
|
||||
@ -1,197 +0,0 @@
|
||||
From e6683d001a95d7c3d4d992496f00f77e01fcd268 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Sun, 22 Nov 2015 15:04:23 +0100
|
||||
Subject: [PATCH v2] Add format attribute to some function declarations
|
||||
|
||||
GCC and Clang are able to check the format arguments given to a
|
||||
function and warn the user if there is a error in the format arguments
|
||||
or if there is a potential uncontrolled format string security problem
|
||||
in the code. GCC does this automatically for some functions like
|
||||
printf(), but it is also possible to annotate other functions in a way
|
||||
that it will check them too. This feature is used by glibc for many
|
||||
functions. This patch adds the attribute to the some functions of musl
|
||||
expect for these functions where gcc automatically adds it.
|
||||
|
||||
GCC automatically adds checks for these functions: printf, fprintf,
|
||||
sprintf, scanf, fscanf, sscanf, strftime, vprintf, vfprintf and
|
||||
vsprintf.
|
||||
|
||||
The documentation from gcc is here:
|
||||
https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html
|
||||
|
||||
The documentation from Clang is here:
|
||||
http://clang.llvm.org/docs/AttributeReference.html#format-gnu-format
|
||||
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
---
|
||||
include/err.h | 26 +++++++++++++++++---------
|
||||
include/monetary.h | 12 ++++++++++--
|
||||
include/stdio.h | 29 ++++++++++++++++++++---------
|
||||
include/syslog.h | 12 ++++++++++--
|
||||
4 files changed, 57 insertions(+), 22 deletions(-)
|
||||
|
||||
--- a/include/err.h
|
||||
+++ b/include/err.h
|
||||
@@ -8,15 +8,23 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
-void warn(const char *, ...);
|
||||
-void vwarn(const char *, va_list);
|
||||
-void warnx(const char *, ...);
|
||||
-void vwarnx(const char *, va_list);
|
||||
+#if __GNUC__ >= 3
|
||||
+#define __fp(x, y) __attribute__ ((__format__ (__printf__, x, y)))
|
||||
+#else
|
||||
+#define __fp(x, y)
|
||||
+#endif
|
||||
+
|
||||
+void warn(const char *, ...) __fp(1, 2);
|
||||
+void vwarn(const char *, va_list) __fp(1, 0);
|
||||
+void warnx(const char *, ...) __fp(1, 2);
|
||||
+void vwarnx(const char *, va_list) __fp(1, 0);
|
||||
+
|
||||
+_Noreturn void err(int, const char *, ...) __fp(2, 3);
|
||||
+_Noreturn void verr(int, const char *, va_list) __fp(2, 0);
|
||||
+_Noreturn void errx(int, const char *, ...) __fp(2, 3);
|
||||
+_Noreturn void verrx(int, const char *, va_list) __fp(2, 0);
|
||||
|
||||
-_Noreturn void err(int, const char *, ...);
|
||||
-_Noreturn void verr(int, const char *, va_list);
|
||||
-_Noreturn void errx(int, const char *, ...);
|
||||
-_Noreturn void verrx(int, const char *, va_list);
|
||||
+#undef __fp
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
--- a/include/monetary.h
|
||||
+++ b/include/monetary.h
|
||||
@@ -13,8 +13,16 @@ extern "C" {
|
||||
|
||||
#include <bits/alltypes.h>
|
||||
|
||||
-ssize_t strfmon(char *__restrict, size_t, const char *__restrict, ...);
|
||||
-ssize_t strfmon_l(char *__restrict, size_t, locale_t, const char *__restrict, ...);
|
||||
+#if __GNUC__ >= 3
|
||||
+#define __fsfm(x, y) __attribute__ ((__format__ (__strfmon__, x, y)))
|
||||
+#else
|
||||
+#define __fsfm(x, y)
|
||||
+#endif
|
||||
+
|
||||
+ssize_t strfmon(char *__restrict, size_t, const char *__restrict, ...) __fsfm(3, 4);
|
||||
+ssize_t strfmon_l(char *__restrict, size_t, locale_t, const char *__restrict, ...) __fsfm(4, 5);
|
||||
+
|
||||
+#undef __fsfm
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
--- a/include/stdio.h
|
||||
+++ b/include/stdio.h
|
||||
@@ -25,6 +25,14 @@ extern "C" {
|
||||
|
||||
#include <bits/alltypes.h>
|
||||
|
||||
+#if __GNUC__ >= 3
|
||||
+#define __fp(x, y) __attribute__ ((__format__ (__printf__, x, y)))
|
||||
+#define __fs(x, y) __attribute__ ((__format__ (__scanf__, x, y)))
|
||||
+#else
|
||||
+#define __fp(x, y)
|
||||
+#define __fs(x, y)
|
||||
+#endif
|
||||
+
|
||||
#ifdef __cplusplus
|
||||
#define NULL 0L
|
||||
#else
|
||||
@@ -107,19 +115,19 @@ int puts(const char *);
|
||||
int printf(const char *__restrict, ...);
|
||||
int fprintf(FILE *__restrict, const char *__restrict, ...);
|
||||
int sprintf(char *__restrict, const char *__restrict, ...);
|
||||
-int snprintf(char *__restrict, size_t, const char *__restrict, ...);
|
||||
+int snprintf(char *__restrict, size_t, const char *__restrict, ...) __fp(3, 4);
|
||||
|
||||
int vprintf(const char *__restrict, __isoc_va_list);
|
||||
int vfprintf(FILE *__restrict, const char *__restrict, __isoc_va_list);
|
||||
int vsprintf(char *__restrict, const char *__restrict, __isoc_va_list);
|
||||
-int vsnprintf(char *__restrict, size_t, const char *__restrict, __isoc_va_list);
|
||||
+int vsnprintf(char *__restrict, size_t, const char *__restrict, __isoc_va_list) __fp(3, 0);
|
||||
|
||||
int scanf(const char *__restrict, ...);
|
||||
int fscanf(FILE *__restrict, const char *__restrict, ...);
|
||||
int sscanf(const char *__restrict, const char *__restrict, ...);
|
||||
-int vscanf(const char *__restrict, __isoc_va_list);
|
||||
-int vfscanf(FILE *__restrict, const char *__restrict, __isoc_va_list);
|
||||
-int vsscanf(const char *__restrict, const char *__restrict, __isoc_va_list);
|
||||
+int vscanf(const char *__restrict, __isoc_va_list) __fs(1, 0);
|
||||
+int vfscanf(FILE *__restrict, const char *__restrict, __isoc_va_list) __fs(2, 0);
|
||||
+int vsscanf(const char *__restrict, const char *__restrict, __isoc_va_list) __fs(2, 0);
|
||||
|
||||
void perror(const char *);
|
||||
|
||||
@@ -140,8 +148,8 @@ int pclose(FILE *);
|
||||
int fileno(FILE *);
|
||||
int fseeko(FILE *, off_t, int);
|
||||
off_t ftello(FILE *);
|
||||
-int dprintf(int, const char *__restrict, ...);
|
||||
-int vdprintf(int, const char *__restrict, __isoc_va_list);
|
||||
+int dprintf(int, const char *__restrict, ...) __fp(2, 3);
|
||||
+int vdprintf(int, const char *__restrict, __isoc_va_list) __fp(2, 0);
|
||||
void flockfile(FILE *);
|
||||
int ftrylockfile(FILE *);
|
||||
void funlockfile(FILE *);
|
||||
@@ -180,8 +188,8 @@ int fileno_unlocked(FILE *);
|
||||
int getw(FILE *);
|
||||
int putw(int, FILE *);
|
||||
char *fgetln(FILE *, size_t *);
|
||||
-int asprintf(char **, const char *, ...);
|
||||
-int vasprintf(char **, const char *, __isoc_va_list);
|
||||
+int asprintf(char **, const char *, ...) __fp(2, 3);
|
||||
+int vasprintf(char **, const char *, __isoc_va_list) __fp(2, 0);
|
||||
#endif
|
||||
|
||||
#ifdef _GNU_SOURCE
|
||||
@@ -203,6 +211,9 @@ typedef struct _IO_cookie_io_functions_t
|
||||
FILE *fopencookie(void *, const char *, cookie_io_functions_t);
|
||||
#endif
|
||||
|
||||
+#undef __fp
|
||||
+#undef __fs
|
||||
+
|
||||
#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
|
||||
#define tmpfile64 tmpfile
|
||||
#define fopen64 fopen
|
||||
--- a/include/syslog.h
|
||||
+++ b/include/syslog.h
|
||||
@@ -56,16 +56,22 @@ extern "C" {
|
||||
#define LOG_NOWAIT 0x10
|
||||
#define LOG_PERROR 0x20
|
||||
|
||||
+#if __GNUC__ >= 3
|
||||
+#define __fp(x, y) __attribute__ ((__format__ (__printf__, x, y)))
|
||||
+#else
|
||||
+#define __fp(x, y)
|
||||
+#endif
|
||||
+
|
||||
void closelog (void);
|
||||
void openlog (const char *, int, int);
|
||||
int setlogmask (int);
|
||||
-void syslog (int, const char *, ...);
|
||||
+void syslog (int, const char *, ...) __fp(2, 3);
|
||||
|
||||
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
||||
#define _PATH_LOG "/dev/log"
|
||||
#define __NEED_va_list
|
||||
#include <bits/alltypes.h>
|
||||
-void vsyslog (int, const char *, va_list);
|
||||
+void vsyslog (int, const char *, va_list) __fp(2, 0);
|
||||
#if defined(SYSLOG_NAMES)
|
||||
#define INTERNAL_NOPRI 0x10
|
||||
#define INTERNAL_MARK (LOG_NFACILITIES<<3)
|
||||
@@ -93,6 +99,8 @@ typedef struct {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+#undef __fp
|
||||
+
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@ -1,51 +0,0 @@
|
||||
From 4d5aa20a94a2d3fae3e69289dc23ecafbd0c16c4 Mon Sep 17 00:00:00 2001
|
||||
From: Rich Felker <dalias@aerifal.cx>
|
||||
Date: Fri, 22 May 2020 17:35:14 -0400
|
||||
Subject: [PATCH 1/4] reorder thread list unlink in pthread_exit after all
|
||||
locks
|
||||
|
||||
since the backend for LOCK() skips locking if single-threaded, it's
|
||||
unsafe to make the process appear single-threaded before the last use
|
||||
of lock.
|
||||
|
||||
this fixes potential unsynchronized access to a linked list via
|
||||
__dl_thread_cleanup.
|
||||
---
|
||||
src/thread/pthread_create.c | 19 +++++++++++--------
|
||||
1 file changed, 11 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/src/thread/pthread_create.c
|
||||
+++ b/src/thread/pthread_create.c
|
||||
@@ -90,14 +90,7 @@ _Noreturn void __pthread_exit(void *resu
|
||||
exit(0);
|
||||
}
|
||||
|
||||
- /* At this point we are committed to thread termination. Unlink
|
||||
- * the thread from the list. This change will not be visible
|
||||
- * until the lock is released, which only happens after SYS_exit
|
||||
- * has been called, via the exit futex address pointing at the lock. */
|
||||
- libc.threads_minus_1--;
|
||||
- self->next->prev = self->prev;
|
||||
- self->prev->next = self->next;
|
||||
- self->prev = self->next = self;
|
||||
+ /* At this point we are committed to thread termination. */
|
||||
|
||||
/* Process robust list in userspace to handle non-pshared mutexes
|
||||
* and the detached thread case where the robust list head will
|
||||
@@ -121,6 +114,16 @@ _Noreturn void __pthread_exit(void *resu
|
||||
__do_orphaned_stdio_locks();
|
||||
__dl_thread_cleanup();
|
||||
|
||||
+ /* Last, unlink thread from the list. This change will not be visible
|
||||
+ * until the lock is released, which only happens after SYS_exit
|
||||
+ * has been called, via the exit futex address pointing at the lock.
|
||||
+ * This needs to happen after any possible calls to LOCK() that might
|
||||
+ * skip locking if libc.threads_minus_1 is zero. */
|
||||
+ libc.threads_minus_1--;
|
||||
+ self->next->prev = self->prev;
|
||||
+ self->prev->next = self->next;
|
||||
+ self->prev = self->next = self;
|
||||
+
|
||||
/* This atomic potentially competes with a concurrent pthread_detach
|
||||
* call; the loser is responsible for freeing thread resources. */
|
||||
int state = a_cas(&self->detach_state, DT_JOINABLE, DT_EXITING);
|
||||
@ -1,69 +0,0 @@
|
||||
From e01b5939b38aea5ecbe41670643199825874b26c Mon Sep 17 00:00:00 2001
|
||||
From: Rich Felker <dalias@aerifal.cx>
|
||||
Date: Thu, 21 May 2020 23:32:45 -0400
|
||||
Subject: [PATCH 2/4] don't use libc.threads_minus_1 as relaxed atomic for
|
||||
skipping locks
|
||||
|
||||
after all but the last thread exits, the next thread to observe
|
||||
libc.threads_minus_1==0 and conclude that it can skip locking fails to
|
||||
synchronize with any changes to memory that were made by the
|
||||
last-exiting thread. this can produce data races.
|
||||
|
||||
on some archs, at least x86, memory synchronization is unlikely to be
|
||||
a problem; however, with the inline locks in malloc, skipping the lock
|
||||
also eliminated the compiler barrier, and caused code that needed to
|
||||
re-check chunk in-use bits after obtaining the lock to reuse a stale
|
||||
value, possibly from before the process became single-threaded. this
|
||||
in turn produced corruption of the heap state.
|
||||
|
||||
some uses of libc.threads_minus_1 remain, especially for allocation of
|
||||
new TLS in the dynamic linker; otherwise, it could be removed
|
||||
entirely. it's made non-volatile to reflect that the remaining
|
||||
accesses are only made under lock on the thread list.
|
||||
|
||||
instead of libc.threads_minus_1, libc.threaded is now used for
|
||||
skipping locks. the difference is that libc.threaded is permanently
|
||||
true once an additional thread has been created. this will produce
|
||||
some performance regression in processes that are mostly
|
||||
single-threaded but occasionally creating threads. in the future it
|
||||
may be possible to bring back the full lock-skipping, but more care
|
||||
needs to be taken to produce a safe design.
|
||||
---
|
||||
src/internal/libc.h | 2 +-
|
||||
src/malloc/malloc.c | 2 +-
|
||||
src/thread/__lock.c | 2 +-
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/src/internal/libc.h
|
||||
+++ b/src/internal/libc.h
|
||||
@@ -21,7 +21,7 @@ struct __libc {
|
||||
int can_do_threads;
|
||||
int threaded;
|
||||
int secure;
|
||||
- volatile int threads_minus_1;
|
||||
+ int threads_minus_1;
|
||||
size_t *auxv;
|
||||
struct tls_module *tls_head;
|
||||
size_t tls_size, tls_align, tls_cnt;
|
||||
--- a/src/malloc/malloc.c
|
||||
+++ b/src/malloc/malloc.c
|
||||
@@ -26,7 +26,7 @@ int __malloc_replaced;
|
||||
|
||||
static inline void lock(volatile int *lk)
|
||||
{
|
||||
- if (libc.threads_minus_1)
|
||||
+ if (libc.threaded)
|
||||
while(a_swap(lk, 1)) __wait(lk, lk+1, 1, 1);
|
||||
}
|
||||
|
||||
--- a/src/thread/__lock.c
|
||||
+++ b/src/thread/__lock.c
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
void __lock(volatile int *l)
|
||||
{
|
||||
- if (!libc.threads_minus_1) return;
|
||||
+ if (!libc.threaded) return;
|
||||
/* fast path: INT_MIN for the lock, +1 for the congestion */
|
||||
int current = a_cas(l, 0, INT_MIN + 1);
|
||||
if (!current) return;
|
||||
@ -1,25 +0,0 @@
|
||||
From f12888e9eb9eed60cc266b899dcafecb4752964a Mon Sep 17 00:00:00 2001
|
||||
From: Rich Felker <dalias@aerifal.cx>
|
||||
Date: Fri, 22 May 2020 17:25:38 -0400
|
||||
Subject: [PATCH 3/4] cut down size of some libc struct members
|
||||
|
||||
these are all flags that can be single-byte values.
|
||||
---
|
||||
src/internal/libc.h | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/src/internal/libc.h
|
||||
+++ b/src/internal/libc.h
|
||||
@@ -18,9 +18,9 @@ struct tls_module {
|
||||
};
|
||||
|
||||
struct __libc {
|
||||
- int can_do_threads;
|
||||
- int threaded;
|
||||
- int secure;
|
||||
+ char can_do_threads;
|
||||
+ char threaded;
|
||||
+ char secure;
|
||||
int threads_minus_1;
|
||||
size_t *auxv;
|
||||
struct tls_module *tls_head;
|
||||
@ -1,90 +0,0 @@
|
||||
From 8d81ba8c0bc6fe31136cb15c9c82ef4c24965040 Mon Sep 17 00:00:00 2001
|
||||
From: Rich Felker <dalias@aerifal.cx>
|
||||
Date: Fri, 22 May 2020 17:45:47 -0400
|
||||
Subject: [PATCH 4/4] restore lock-skipping for processes that return to
|
||||
single-threaded state
|
||||
|
||||
the design used here relies on the barrier provided by the first lock
|
||||
operation after the process returns to single-threaded state to
|
||||
synchronize with actions by the last thread that exited. by storing
|
||||
the intent to change modes in the same object used to detect whether
|
||||
locking is needed, it's possible to avoid an extra (possibly costly)
|
||||
memory load after the lock is taken.
|
||||
---
|
||||
src/internal/libc.h | 1 +
|
||||
src/malloc/malloc.c | 5 ++++-
|
||||
src/thread/__lock.c | 4 +++-
|
||||
src/thread/pthread_create.c | 8 ++++----
|
||||
4 files changed, 12 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/src/internal/libc.h
|
||||
+++ b/src/internal/libc.h
|
||||
@@ -21,6 +21,7 @@ struct __libc {
|
||||
char can_do_threads;
|
||||
char threaded;
|
||||
char secure;
|
||||
+ volatile signed char need_locks;
|
||||
int threads_minus_1;
|
||||
size_t *auxv;
|
||||
struct tls_module *tls_head;
|
||||
--- a/src/malloc/malloc.c
|
||||
+++ b/src/malloc/malloc.c
|
||||
@@ -26,8 +26,11 @@ int __malloc_replaced;
|
||||
|
||||
static inline void lock(volatile int *lk)
|
||||
{
|
||||
- if (libc.threaded)
|
||||
+ int need_locks = libc.need_locks;
|
||||
+ if (need_locks) {
|
||||
while(a_swap(lk, 1)) __wait(lk, lk+1, 1, 1);
|
||||
+ if (need_locks < 0) libc.need_locks = 0;
|
||||
+ }
|
||||
}
|
||||
|
||||
static inline void unlock(volatile int *lk)
|
||||
--- a/src/thread/__lock.c
|
||||
+++ b/src/thread/__lock.c
|
||||
@@ -18,9 +18,11 @@
|
||||
|
||||
void __lock(volatile int *l)
|
||||
{
|
||||
- if (!libc.threaded) return;
|
||||
+ int need_locks = libc.need_locks;
|
||||
+ if (!need_locks) return;
|
||||
/* fast path: INT_MIN for the lock, +1 for the congestion */
|
||||
int current = a_cas(l, 0, INT_MIN + 1);
|
||||
+ if (need_locks < 0) libc.need_locks = 0;
|
||||
if (!current) return;
|
||||
/* A first spin loop, for medium congestion. */
|
||||
for (unsigned i = 0; i < 10; ++i) {
|
||||
--- a/src/thread/pthread_create.c
|
||||
+++ b/src/thread/pthread_create.c
|
||||
@@ -118,8 +118,8 @@ _Noreturn void __pthread_exit(void *resu
|
||||
* until the lock is released, which only happens after SYS_exit
|
||||
* has been called, via the exit futex address pointing at the lock.
|
||||
* This needs to happen after any possible calls to LOCK() that might
|
||||
- * skip locking if libc.threads_minus_1 is zero. */
|
||||
- libc.threads_minus_1--;
|
||||
+ * skip locking if process appears single-threaded. */
|
||||
+ if (!--libc.threads_minus_1) libc.need_locks = -1;
|
||||
self->next->prev = self->prev;
|
||||
self->prev->next = self->next;
|
||||
self->prev = self->next = self;
|
||||
@@ -339,7 +339,7 @@ int __pthread_create(pthread_t *restrict
|
||||
~(1UL<<((SIGCANCEL-1)%(8*sizeof(long))));
|
||||
|
||||
__tl_lock();
|
||||
- libc.threads_minus_1++;
|
||||
+ if (!libc.threads_minus_1++) libc.need_locks = 1;
|
||||
ret = __clone((c11 ? start_c11 : start), stack, flags, args, &new->tid, TP_ADJ(new), &__thread_list_lock);
|
||||
|
||||
/* All clone failures translate to EAGAIN. If explicit scheduling
|
||||
@@ -363,7 +363,7 @@ int __pthread_create(pthread_t *restrict
|
||||
new->next->prev = new;
|
||||
new->prev->next = new;
|
||||
} else {
|
||||
- libc.threads_minus_1--;
|
||||
+ if (!--libc.threads_minus_1) libc.need_locks = 0;
|
||||
}
|
||||
__tl_unlock();
|
||||
__restore_sigs(&set);
|
||||
@ -32,9 +32,9 @@ Signed-off-by: Tony Ambardar <Tony.Ambardar@gmail.com>
|
||||
+#define _GNU_SOURCE
|
||||
#include <ftw.h>
|
||||
#include <dirent.h>
|
||||
#include <sys/stat.h>
|
||||
@@ -63,8 +64,20 @@ static int do_nftw(char *path, int (*fn)
|
||||
lev.base = k;
|
||||
#include <fcntl.h>
|
||||
@@ -72,8 +73,20 @@ static int do_nftw(char *path, int (*fn)
|
||||
if (!fd_limit) close(dfd);
|
||||
}
|
||||
|
||||
- if (!(flags & FTW_DEPTH) && (r=fn(path, &st, type, &lev)))
|
||||
@ -56,7 +56,7 @@ Signed-off-by: Tony Ambardar <Tony.Ambardar@gmail.com>
|
||||
|
||||
for (; h; h = h->chain)
|
||||
if (h->dev == st.st_dev && h->ino == st.st_ino)
|
||||
@@ -88,7 +101,10 @@ static int do_nftw(char *path, int (*fn)
|
||||
@@ -101,7 +114,10 @@ static int do_nftw(char *path, int (*fn)
|
||||
strcpy(path+j+1, de->d_name);
|
||||
if ((r=do_nftw(path, fn, fd_limit-1, flags, &new))) {
|
||||
closedir(d);
|
||||
@ -68,7 +68,7 @@ Signed-off-by: Tony Ambardar <Tony.Ambardar@gmail.com>
|
||||
}
|
||||
}
|
||||
closedir(d);
|
||||
@@ -98,8 +114,16 @@ static int do_nftw(char *path, int (*fn)
|
||||
@@ -112,8 +128,16 @@ static int do_nftw(char *path, int (*fn)
|
||||
}
|
||||
|
||||
path[l] = 0;
|
||||
@ -87,7 +87,7 @@ Signed-off-by: Tony Ambardar <Tony.Ambardar@gmail.com>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -125,4 +149,5 @@ int nftw(const char *path, int (*fn)(con
|
||||
@@ -139,4 +163,5 @@ int nftw(const char *path, int (*fn)(con
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
@ -1,63 +0,0 @@
|
||||
--- a/src/multibyte/wcsnrtombs.c
|
||||
+++ b/src/multibyte/wcsnrtombs.c
|
||||
@@ -1,41 +1,33 @@
|
||||
#include <wchar.h>
|
||||
+#include <limits.h>
|
||||
+#include <string.h>
|
||||
|
||||
size_t wcsnrtombs(char *restrict dst, const wchar_t **restrict wcs, size_t wn, size_t n, mbstate_t *restrict st)
|
||||
{
|
||||
- size_t l, cnt=0, n2;
|
||||
- char *s, buf[256];
|
||||
const wchar_t *ws = *wcs;
|
||||
- const wchar_t *tmp_ws;
|
||||
-
|
||||
- if (!dst) s = buf, n = sizeof buf;
|
||||
- else s = dst;
|
||||
-
|
||||
- while ( ws && n && ( (n2=wn)>=n || n2>32 ) ) {
|
||||
- if (n2>=n) n2=n;
|
||||
- tmp_ws = ws;
|
||||
- l = wcsrtombs(s, &ws, n2, 0);
|
||||
- if (!(l+1)) {
|
||||
- cnt = l;
|
||||
- n = 0;
|
||||
+ size_t cnt = 0;
|
||||
+ if (!dst) n=0;
|
||||
+ while (ws && wn) {
|
||||
+ char tmp[MB_LEN_MAX];
|
||||
+ size_t l = wcrtomb(n<MB_LEN_MAX ? tmp : dst, *ws, 0);
|
||||
+ if (l==-1) {
|
||||
+ cnt = -1;
|
||||
break;
|
||||
}
|
||||
- if (s != buf) {
|
||||
- s += l;
|
||||
+ if (dst) {
|
||||
+ if (n<MB_LEN_MAX) {
|
||||
+ if (l>n) break;
|
||||
+ memcpy(dst, tmp, l);
|
||||
+ }
|
||||
+ dst += l;
|
||||
n -= l;
|
||||
}
|
||||
- wn = ws ? wn - (ws - tmp_ws) : 0;
|
||||
- cnt += l;
|
||||
- }
|
||||
- if (ws) while (n && wn) {
|
||||
- l = wcrtomb(s, *ws, 0);
|
||||
- if ((l+1)<=1) {
|
||||
- if (!l) ws = 0;
|
||||
- else cnt = l;
|
||||
+ if (!*ws) {
|
||||
+ ws = 0;
|
||||
break;
|
||||
}
|
||||
- ws++; wn--;
|
||||
- /* safe - this loop runs fewer than sizeof(buf) times */
|
||||
- s+=l; n-=l;
|
||||
+ ws++;
|
||||
+ wn--;
|
||||
cnt += l;
|
||||
}
|
||||
if (dst) *wcs = ws;
|
||||
@ -43,7 +43,7 @@
|
||||
typedef uint32_t BF_word;
|
||||
typedef int32_t BF_word_signed;
|
||||
|
||||
@@ -796,3 +807,4 @@ char *__crypt_blowfish(const char *key,
|
||||
@@ -804,3 +815,4 @@ char *__crypt_blowfish(const char *key,
|
||||
|
||||
return "*";
|
||||
}
|
||||
|
||||
@ -7,11 +7,11 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=bison
|
||||
PKG_VERSION:=3.8.1
|
||||
PKG_VERSION:=3.8.2
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
|
||||
PKG_HASH:=31fc602488aad6bdecf0ccc556e0fc72fc57cdc595cf92398f020e0cf4980f15
|
||||
PKG_HASH:=9bba0214ccf7f1079c5d59210045227bcf619519840ebfa80cd3849cff5a5bf2
|
||||
|
||||
HOST_BUILD_PARALLEL:=1
|
||||
|
||||
|
||||
@ -7,14 +7,14 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=cmake
|
||||
PKG_VERSION:=3.21.2
|
||||
PKG_VERSION:=3.21.3
|
||||
PKG_RELEASE:=1
|
||||
PKG_CPE_ID:=cpe:/a:kitware:cmake
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://github.com/Kitware/CMake/releases/download/v$(PKG_VERSION)/ \
|
||||
https://cmake.org/files/v3.19/
|
||||
PKG_HASH:=94275e0b61c84bb42710f5320a23c6dcb2c6ee032ae7d2a616f53f68b3d21659
|
||||
PKG_HASH:=d14d06df4265134ee42c4d50f5a60cb8b471b7b6a47da8e5d914d49dd783794f
|
||||
|
||||
HOST_BUILD_PARALLEL:=1
|
||||
HOST_CONFIGURE_PARALLEL:=1
|
||||
|
||||
@ -8,11 +8,11 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=libtool
|
||||
PKG_CPE_ID:=cpe:/a:gnu:libtool
|
||||
PKG_VERSION:=2.4.6
|
||||
PKG_VERSION:=2.4.2
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
|
||||
PKG_HASH:=7c87a8c2c8c0fc9cd5019e402bed4292462d00a718a7cd5f11218153bf28b26f
|
||||
PKG_HASH:=1d7b6862c1ed162e327f083a6f78f40eae29218f0db8c38393d61dab764c4407
|
||||
|
||||
HOST_BUILD_PARALLEL:=1
|
||||
|
||||
@ -24,12 +24,7 @@ HOST_CONFIGURE_VARS += \
|
||||
define Host/Prepare
|
||||
$(call Host/Prepare/Default)
|
||||
(cd $(STAGING_DIR_HOST)/share/aclocal/ && rm -f libtool.m4 ltdl.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4)
|
||||
$(if $(QUILT),,(cd $(HOST_BUILD_DIR); touch README-release; $(AM_TOOL_PATHS) ./bootstrap --skip-git --skip-po --force))
|
||||
endef
|
||||
|
||||
define Host/Configure
|
||||
$(if $(QUILT),(cd $(HOST_BUILD_DIR); touch README-release; $(AM_TOOL_PATHS) ./bootstrap --skip-git --skip-po --force))
|
||||
$(call Host/Configure/Default)
|
||||
(cd $(HOST_BUILD_DIR); $(AM_TOOL_PATHS) ./bootstrap)
|
||||
endef
|
||||
|
||||
define Host/Install
|
||||
|
||||
@ -1,24 +1,17 @@
|
||||
From ca10caa502f971f90d8c041aa2476de54ef0ce2b Mon Sep 17 00:00:00 2001
|
||||
From: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
Date: Tue, 20 Jul 2021 16:41:11 -0300
|
||||
Subject: openwrt: make relocatable, search resources relative to STAGING_DIR
|
||||
|
||||
This was originally commited to openwrt by Jo-Philipp Wich
|
||||
<jow@openwrt.org>.
|
||||
|
||||
(adjusted to v2.4.6)
|
||||
Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
|
||||
--- a/libtoolize.in
|
||||
+++ b/libtoolize.in
|
||||
@@ -40,11 +40,18 @@
|
||||
|
||||
: ${AUTOCONF="autoconf"}
|
||||
: ${AUTOMAKE="automake"}
|
||||
--- a/libltdl/config/general.m4sh
|
||||
+++ b/libltdl/config/general.m4sh
|
||||
@@ -45,15 +45,22 @@ progpath="$0"
|
||||
M4SH_VERBATIM([[
|
||||
: ${CP="cp -f"}
|
||||
test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
|
||||
-: ${EGREP="@EGREP@"}
|
||||
-: ${FGREP="@FGREP@"}
|
||||
-: ${GREP="@GREP@"}
|
||||
: ${LN_S="@LN_S@"}
|
||||
: ${MAKE="make"}
|
||||
: ${MKDIR="mkdir"}
|
||||
: ${MV="mv -f"}
|
||||
: ${RM="rm -f"}
|
||||
-: ${SED="@SED@"}
|
||||
+if test -n "$STAGING_DIR"; then
|
||||
+ : ${EGREP="$STAGING_DIR/../host/bin/grep -E"}
|
||||
@ -31,12 +24,87 @@ Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
+ : ${GREP="@GREP@"}
|
||||
+ : ${SED="@SED@"}
|
||||
+fi
|
||||
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
|
||||
: ${Xsed="$SED -e 1s/^X//"}
|
||||
|
||||
--- a/libtoolize.in
|
||||
+++ b/libtoolize.in
|
||||
@@ -334,15 +334,22 @@ as_unset=as_fn_unset
|
||||
|
||||
## -------------------------- ##
|
||||
--- a/m4/libtool.m4
|
||||
+++ b/m4/libtool.m4
|
||||
@@ -929,9 +929,8 @@ dnl AC_DEFUN([AC_LIBTOOL_RC], [])
|
||||
: ${CP="cp -f"}
|
||||
test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
|
||||
-: ${EGREP="@EGREP@"}
|
||||
-: ${FGREP="@FGREP@"}
|
||||
-: ${GREP="@GREP@"}
|
||||
: ${LN_S="@LN_S@"}
|
||||
: ${MAKE="make"}
|
||||
: ${MKDIR="mkdir"}
|
||||
: ${MV="mv -f"}
|
||||
: ${RM="rm -f"}
|
||||
-: ${SED="@SED@"}
|
||||
+if test -n "$STAGING_DIR"; then
|
||||
+ : ${EGREP="$STAGING_DIR/../host/bin/grep -E"}
|
||||
+ : ${FGREP="$STAGING_DIR/../host/bin/grep -F"}
|
||||
+ : ${GREP="$STAGING_DIR/../host/bin/grep"}
|
||||
+ : ${SED="$STAGING_DIR/../host/bin/sed"}
|
||||
+else
|
||||
+ : ${EGREP="@EGREP@"}
|
||||
+ : ${FGREP="@FGREP@"}
|
||||
+ : ${GREP="@GREP@"}
|
||||
+ : ${SED="@SED@"}
|
||||
+fi
|
||||
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
|
||||
: ${Xsed="$SED -e 1s/^X//"}
|
||||
|
||||
@@ -2487,10 +2494,17 @@ func_check_macros ()
|
||||
|
||||
# Locations for important files:
|
||||
prefix=@prefix@
|
||||
- datadir=@datadir@
|
||||
- pkgdatadir=@pkgdatadir@
|
||||
- pkgltdldir=@pkgdatadir@
|
||||
- aclocaldir=@aclocaldir@
|
||||
+ if test -n "$STAGING_DIR"; then
|
||||
+ datadir="$STAGING_DIR/../host/share"
|
||||
+ pkgdatadir="$STAGING_DIR/../host/share/libtool"
|
||||
+ pkgltdldir="$STAGING_DIR/../host/share/libtool"
|
||||
+ aclocaldir="$STAGING_DIR/../host/share/aclocal"
|
||||
+ else
|
||||
+ datadir=@datadir@
|
||||
+ pkgdatadir=@pkgdatadir@
|
||||
+ pkgltdldir=@pkgdatadir@
|
||||
+ aclocaldir=@aclocaldir@
|
||||
+ fi
|
||||
auxdir=
|
||||
macrodir=
|
||||
configure_ac=configure.in
|
||||
--- a/libtoolize.m4sh
|
||||
+++ b/libtoolize.m4sh
|
||||
@@ -1453,10 +1453,17 @@ func_check_macros ()
|
||||
|
||||
# Locations for important files:
|
||||
prefix=@prefix@
|
||||
- datadir=@datadir@
|
||||
- pkgdatadir=@pkgdatadir@
|
||||
- pkgltdldir=@pkgdatadir@
|
||||
- aclocaldir=@aclocaldir@
|
||||
+ if test -n "$STAGING_DIR"; then
|
||||
+ datadir="$STAGING_DIR/../host/share"
|
||||
+ pkgdatadir="$STAGING_DIR/../host/share/libtool"
|
||||
+ pkgltdldir="$STAGING_DIR/../host/share/libtool"
|
||||
+ aclocaldir="$STAGING_DIR/../host/share/aclocal"
|
||||
+ else
|
||||
+ datadir=@datadir@
|
||||
+ pkgdatadir=@pkgdatadir@
|
||||
+ pkgltdldir=@pkgdatadir@
|
||||
+ aclocaldir=@aclocaldir@
|
||||
+ fi
|
||||
auxdir=
|
||||
macrodir=
|
||||
configure_ac=configure.in
|
||||
--- a/libltdl/m4/libtool.m4
|
||||
+++ b/libltdl/m4/libtool.m4
|
||||
@@ -907,9 +907,8 @@ dnl AC_DEFUN([AC_LIBTOOL_RC], [])
|
||||
# ----------------
|
||||
m4_defun([_LT_TAG_COMPILER],
|
||||
[AC_REQUIRE([AC_PROG_CC])dnl
|
||||
@ -47,7 +115,7 @@ Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
|
||||
_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
|
||||
|
||||
@@ -8160,9 +8159,9 @@ m4_defun([_LT_DECL_EGREP],
|
||||
@@ -7660,9 +7659,9 @@ m4_defun([_LT_DECL_EGREP],
|
||||
[AC_REQUIRE([AC_PROG_EGREP])dnl
|
||||
AC_REQUIRE([AC_PROG_FGREP])dnl
|
||||
test -z "$GREP" && GREP=grep
|
||||
@ -60,7 +128,7 @@ Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
|
||||
AC_SUBST([GREP])
|
||||
])
|
||||
@@ -8195,9 +8194,8 @@ AC_SUBST([DLLTOOL])
|
||||
@@ -7695,9 +7694,8 @@ AC_SUBST([DLLTOOL])
|
||||
# as few characters as possible. Prefer GNU sed if found.
|
||||
m4_defun([_LT_DECL_SED],
|
||||
[AC_PROG_SED
|
||||
|
||||
@ -1,56 +1,83 @@
|
||||
From 67ffe8e8582a7ba1f1d1307a419098e6dd88bdaf Mon Sep 17 00:00:00 2001
|
||||
From: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
Date: Tue, 20 Jul 2021 16:41:11 -0300
|
||||
Subject: openwrt: cross-compilation path adjustments
|
||||
|
||||
Comments from the patch:
|
||||
|
||||
Adding 'libdir' from the .la file to our library search paths
|
||||
breaks crosscompilation horribly. We cheat here and don't add
|
||||
it, instead adding the path where we found the .la. -CL
|
||||
|
||||
OE sets installed=no in staging. We need to look in $objdir and $absdir,
|
||||
preferring $objdir. RP 31/04/2008
|
||||
|
||||
This was originally commited to openwrt by Jo-Philipp Wich
|
||||
<jow@openwrt.org>.
|
||||
|
||||
(adjusted to v2.4.6)
|
||||
Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
|
||||
--- a/build-aux/ltmain.in
|
||||
+++ b/build-aux/ltmain.in
|
||||
@@ -6049,8 +6049,14 @@ func_mode_link ()
|
||||
absdir=$abs_ladir
|
||||
libdir=$abs_ladir
|
||||
--- a/libltdl/config/ltmain.m4sh
|
||||
+++ b/libltdl/config/ltmain.m4sh
|
||||
@@ -5731,8 +5731,14 @@ func_mode_link ()
|
||||
absdir="$abs_ladir"
|
||||
libdir="$abs_ladir"
|
||||
else
|
||||
- dir=$lt_sysroot$libdir
|
||||
- absdir=$lt_sysroot$libdir
|
||||
- dir="$lt_sysroot$libdir"
|
||||
- absdir="$lt_sysroot$libdir"
|
||||
+ # Adding 'libdir' from the .la file to our library search paths
|
||||
+ # breaks crosscompilation horribly. We cheat here and don't add
|
||||
+ # it, instead adding the path where we found the .la. -CL
|
||||
+ dir="$lt_sysroot$abs_ladir"
|
||||
+ absdir="$abs_ladir"
|
||||
+ libdir="$abs_ladir"
|
||||
+ #dir=$lt_sysroot$libdir
|
||||
+ #absdir=$lt_sysroot$libdir
|
||||
+ #dir="$libdir"
|
||||
+ #absdir="$lt_sysroot$libdir"
|
||||
fi
|
||||
test yes = "$hardcode_automatic" && avoidtemprpath=yes
|
||||
test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
|
||||
else
|
||||
@@ -6448,8 +6454,6 @@ func_mode_link ()
|
||||
add=$libdir/$linklib
|
||||
@@ -6130,8 +6136,6 @@ func_mode_link ()
|
||||
add="$libdir/$linklib"
|
||||
fi
|
||||
else
|
||||
- # We cannot seem to hardcode it, guess we'll fake it.
|
||||
- add_dir=-L$libdir
|
||||
- add_dir="-L$libdir"
|
||||
# Try looking first in the location we're being installed to.
|
||||
if test -n "$inst_prefix_dir"; then
|
||||
case $libdir in
|
||||
@@ -6604,7 +6608,17 @@ func_mode_link ()
|
||||
@@ -6286,7 +6290,17 @@ func_mode_link ()
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
- path=-L$absdir/$objdir
|
||||
- path="-L$absdir/$objdir"
|
||||
+ # OE sets installed=no in staging. We need to look in $objdir and $absdir,
|
||||
+ # preferring $objdir. RP 31/04/2008
|
||||
+ if test -f "$absdir/$objdir/$depdepl" ; then
|
||||
+ depdepl="$absdir/$objdir/$depdepl"
|
||||
+ path="-L$absdir/$objdir"
|
||||
+ elif test -f "$absdir/$depdepl" ; then
|
||||
+ depdepl="$absdir/$depdepl"
|
||||
+ path="-L$absdir"
|
||||
+ else
|
||||
+ path="-L$absdir/$objdir"
|
||||
+ fi
|
||||
;;
|
||||
esac
|
||||
else
|
||||
--- a/libltdl/config/ltmain.sh
|
||||
+++ b/libltdl/config/ltmain.sh
|
||||
@@ -6518,8 +6518,14 @@ func_mode_link ()
|
||||
absdir="$abs_ladir"
|
||||
libdir="$abs_ladir"
|
||||
else
|
||||
- dir="$lt_sysroot$libdir"
|
||||
- absdir="$lt_sysroot$libdir"
|
||||
+ # Adding 'libdir' from the .la file to our library search paths
|
||||
+ # breaks crosscompilation horribly. We cheat here and don't add
|
||||
+ # it, instead adding the path where we found the .la. -CL
|
||||
+ dir="$lt_sysroot$abs_ladir"
|
||||
+ absdir="$abs_ladir"
|
||||
+ libdir="$abs_ladir"
|
||||
+ #dir="$libdir"
|
||||
+ #absdir="$lt_sysroot$libdir"
|
||||
fi
|
||||
test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
|
||||
else
|
||||
@@ -6917,8 +6923,6 @@ func_mode_link ()
|
||||
add="$libdir/$linklib"
|
||||
fi
|
||||
else
|
||||
- # We cannot seem to hardcode it, guess we'll fake it.
|
||||
- add_dir="-L$libdir"
|
||||
# Try looking first in the location we're being installed to.
|
||||
if test -n "$inst_prefix_dir"; then
|
||||
case $libdir in
|
||||
@@ -7073,7 +7077,17 @@ func_mode_link ()
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
- path="-L$absdir/$objdir"
|
||||
+ # OE sets installed=no in staging. We need to look in $objdir and $absdir,
|
||||
+ # preferring $objdir. RP 31/04/2008
|
||||
+ if test -f "$absdir/$objdir/$depdepl" ; then
|
||||
|
||||
@ -1,33 +1,20 @@
|
||||
From 375833af93999f8b0a747c8a1dfa3ec8d347743d Mon Sep 17 00:00:00 2001
|
||||
From: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
Date: Tue, 20 Jul 2021 16:52:37 -0300
|
||||
Subject: openwrt: don't use target dir for relinking
|
||||
|
||||
This was originally commited to openwrt by Jo-Philipp Wich
|
||||
<jow@openwrt.org>.
|
||||
|
||||
(adjusted to v2.4.6)
|
||||
Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
|
||||
--- a/build-aux/ltmain.in
|
||||
+++ b/build-aux/ltmain.in
|
||||
@@ -6434,13 +6434,13 @@ func_mode_link ()
|
||||
add_dir=
|
||||
add=
|
||||
# Finalize command for both is simple: just hardcode it.
|
||||
- if test yes = "$hardcode_direct" &&
|
||||
- test no = "$hardcode_direct_absolute"; then
|
||||
- add=$libdir/$linklib
|
||||
- elif test yes = "$hardcode_minus_L"; then
|
||||
+ if test "$hardcode_direct" = yes &&
|
||||
+ test "$hardcode_direct_absolute" = no; then
|
||||
+ add="$libdir/$linklib"
|
||||
+ elif test "$hardcode_minus_L" = yes; then
|
||||
add_dir=-L$libdir
|
||||
- add=-l$name
|
||||
- elif test yes = "$hardcode_shlibpath_var"; then
|
||||
+ add="-l$name"
|
||||
+ elif test "$hardcode_shlibpath_var" = yes; then
|
||||
--- a/libltdl/config/ltmain.m4sh
|
||||
+++ b/libltdl/config/ltmain.m4sh
|
||||
@@ -6120,7 +6120,6 @@ func_mode_link ()
|
||||
test "$hardcode_direct_absolute" = no; then
|
||||
add="$libdir/$linklib"
|
||||
elif test "$hardcode_minus_L" = yes; then
|
||||
- add_dir="-L$libdir"
|
||||
add="-l$name"
|
||||
elif test "$hardcode_shlibpath_var" = yes; then
|
||||
case :$finalize_shlibpath: in
|
||||
--- a/libltdl/config/ltmain.sh
|
||||
+++ b/libltdl/config/ltmain.sh
|
||||
@@ -6907,7 +6907,6 @@ func_mode_link ()
|
||||
test "$hardcode_direct_absolute" = no; then
|
||||
add="$libdir/$linklib"
|
||||
elif test "$hardcode_minus_L" = yes; then
|
||||
- add_dir="-L$libdir"
|
||||
add="-l$name"
|
||||
elif test "$hardcode_shlibpath_var" = yes; then
|
||||
case :$finalize_shlibpath: in
|
||||
*":$libdir:"*) ;;
|
||||
*) func_append finalize_shlibpath "$libdir:" ;;
|
||||
|
||||
@ -1,26 +1,24 @@
|
||||
From 7f2b8a1ab4fa1475eeeddfb84eb5b92594bfce43 Mon Sep 17 00:00:00 2001
|
||||
From: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
Date: Tue, 20 Jul 2021 16:54:12 -0300
|
||||
Subject: openwrt: strip unsave directories from relink command
|
||||
|
||||
strip unsave directories from relink command, nuke every -L that looks
|
||||
like /usr/lib or /lib
|
||||
|
||||
This was originally commited to openwrt by Jo-Philipp Wich
|
||||
<jow@openwrt.org>.
|
||||
|
||||
(adjusted to v2.4.6)
|
||||
Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
|
||||
--- a/build-aux/ltmain.in
|
||||
+++ b/build-aux/ltmain.in
|
||||
@@ -2382,6 +2382,9 @@ func_mode_install ()
|
||||
--- a/libltdl/config/ltmain.m4sh
|
||||
+++ b/libltdl/config/ltmain.m4sh
|
||||
@@ -2183,6 +2183,9 @@ func_mode_install ()
|
||||
relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
|
||||
fi
|
||||
|
||||
+ relink_command=`$ECHO "$relink_command" | $SED "s%-L[[:space:]]*/lib[^[:space:]]*%%"`
|
||||
+ relink_command=`$ECHO "$relink_command" | $SED "s%-L[[:space:]]*/usr/lib[^[:space:]]*%%"`
|
||||
+
|
||||
func_warning "relinking '$file'"
|
||||
func_warning "relinking \`$file'"
|
||||
func_show_eval "$relink_command" \
|
||||
'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
|
||||
'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
|
||||
--- a/libltdl/config/ltmain.sh
|
||||
+++ b/libltdl/config/ltmain.sh
|
||||
@@ -2973,6 +2973,9 @@ func_mode_install ()
|
||||
relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
|
||||
fi
|
||||
|
||||
+ relink_command=`$ECHO "$relink_command" | $SED "s%-L[[:space:]]*/lib[^[:space:]]*%%"`
|
||||
+ relink_command=`$ECHO "$relink_command" | $SED "s%-L[[:space:]]*/usr/lib[^[:space:]]*%%"`
|
||||
+
|
||||
func_warning "relinking \`$file'"
|
||||
func_show_eval "$relink_command" \
|
||||
'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
|
||||
|
||||
@ -1,72 +0,0 @@
|
||||
From 879578d3f4dc9bc42aa433b1fb6b584564f83617 Mon Sep 17 00:00:00 2001
|
||||
From: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
Date: Wed, 21 Jul 2021 13:38:24 -0300
|
||||
Subject: openwrt: don't quote $(SHELL) in Makefile.am
|
||||
|
||||
This allows to use SHELL="env bash" to get a controlled enviroment.
|
||||
|
||||
Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -46,7 +46,7 @@ EXTRA_LTLIBRARIES =
|
||||
# Using 'cd' in backquotes may print the directory name, use this instead:
|
||||
lt__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
|
||||
-git_version_gen = '$(SHELL)' '$(aux_dir)/git-version-gen' '--fallback' '$(VERSION)' '.tarball-version'
|
||||
+git_version_gen = $(SHELL) '$(aux_dir)/git-version-gen' '--fallback' '$(VERSION)' '.tarball-version'
|
||||
rebuild = rebuild=:; revision=`$(lt__cd) $(srcdir) && $(git_version_gen) | $(SED) 's|-.*$$||'`
|
||||
|
||||
|
||||
@@ -301,7 +301,7 @@ libtool: $(ltmain_sh) $(config_status) $
|
||||
if test 0 = '$(AM_DEFAULT_VERBOSITY)' && test 1 != '$(V)'; \
|
||||
then echo " GEN " $@; \
|
||||
else echo '$(SHELL) $(top_builddir)/config.status "$@"'; fi; \
|
||||
- cd '$(top_builddir)' && '$(SHELL)' ./config.status '$@'; \
|
||||
+ cd '$(top_builddir)' && $(SHELL) ./config.status '$@'; \
|
||||
fi
|
||||
|
||||
|
||||
@@ -788,13 +788,13 @@ testsuite_deps_uninstalled = $(testsuite
|
||||
# Hook the test suite into the check rule
|
||||
check-local: $(testsuite_deps_uninstalled)
|
||||
$(AM_V_at)$(CD_TESTDIR); \
|
||||
- CONFIG_SHELL='$(SHELL)' '$(SHELL)' "$$abs_srcdir/$(TESTSUITE)" \
|
||||
+ CONFIG_SHELL=$(SHELL) $(SHELL) "$$abs_srcdir/$(TESTSUITE)" \
|
||||
$(TESTS_ENVIRONMENT) $(BUILDCHECK_ENVIRONMENT) $(TESTSUITEFLAGS)
|
||||
|
||||
# Run the test suite on the *installed* tree.
|
||||
installcheck-local: $(testsuite_deps)
|
||||
$(AM_V_at)$(CD_TESTDIR); \
|
||||
- CONFIG_SHELL='$(SHELL)' '$(SHELL)' "$$abs_srcdir/$(TESTSUITE)" \
|
||||
+ CONFIG_SHELL=$(SHELL) $(SHELL) "$$abs_srcdir/$(TESTSUITE)" \
|
||||
$(TESTS_ENVIRONMENT) $(INSTALLCHECK_ENVIRONMENT) $(TESTSUITEFLAGS) \
|
||||
AUTOTEST_PATH='$(exec_prefix)/bin'
|
||||
|
||||
@@ -806,7 +806,7 @@ check-noninteractive-old:
|
||||
.PHONY: check-noninteractive-new
|
||||
check-noninteractive-new: $(testsuite_deps_uninstalled)
|
||||
$(AM_V_at)$(CD_TESTDIR); \
|
||||
- CONFIG_SHELL='$(SHELL)' '$(SHELL)' "$$abs_srcdir/$(TESTSUITE)" \
|
||||
+ CONFIG_SHELL=$(SHELL) $(SHELL) "$$abs_srcdir/$(TESTSUITE)" \
|
||||
$(TESTS_ENVIRONMENT) $(BUILDCHECK_ENVIRONMENT) \
|
||||
-k '!interactive' INNER_TESTSUITEFLAGS=',!interactive' \
|
||||
$(TESTSUITEFLAGS)
|
||||
@@ -815,7 +815,7 @@ check-noninteractive-new: $(testsuite_de
|
||||
.PHONY: check-interactive
|
||||
check-interactive: $(testsuite_deps_uninstalled)
|
||||
$(AM_V_at)$(CD_TESTDIR); \
|
||||
- CONFIG_SHELL='$(SHELL)' '$(SHELL)' "$$abs_srcdir/$(TESTSUITE)" \
|
||||
+ CONFIG_SHELL=$(SHELL) $(SHELL) "$$abs_srcdir/$(TESTSUITE)" \
|
||||
$(TESTS_ENVIRONMENT) $(BUILDCHECK_ENVIRONMENT) \
|
||||
-k interactive -k recursive INNER_TESTSUITEFLAGS=',interactive' \
|
||||
$(TESTSUITEFLAGS)
|
||||
@@ -827,7 +827,7 @@ check-noninteractive: check-noninteracti
|
||||
clean-local:
|
||||
-$(CD_TESTDIR); \
|
||||
test -f "$$abs_srcdir/$(TESTSUITE)" && \
|
||||
- '$(SHELL)' "$$abs_srcdir/$(TESTSUITE)" --clean
|
||||
+ $(SHELL) "$$abs_srcdir/$(TESTSUITE)" --clean
|
||||
|
||||
## An empty target to depend on when a rule needs to always run
|
||||
## whenever it is visited.
|
||||
@ -1,224 +0,0 @@
|
||||
From 3adadb568fbf15d952bd25a005b6a9afb7e59dc7 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Raiskup <praiskup@redhat.com>
|
||||
Date: Sun, 4 Oct 2015 21:55:03 +0200
|
||||
Subject: libtool: mitigate the $sed_quote_subst slowdown
|
||||
|
||||
When it is reasonably possible, use shell implementation for
|
||||
quoting.
|
||||
|
||||
References:
|
||||
http://lists.gnu.org/archive/html/libtool/2015-03/msg00005.html
|
||||
http://lists.gnu.org/archive/html/libtool/2015-02/msg00000.html
|
||||
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20006
|
||||
|
||||
* gl/build-aux/funclib.sh (func_quote): New function that can be
|
||||
used as substitution for '$SED $sed_quote_subst' call.
|
||||
* build-aux/ltmain.in (func_emit_wrapper): Use func_quote instead
|
||||
of '$SED $sed_quote_subst'.
|
||||
(func_mode_link): Likewise.
|
||||
* NEWS: Document.
|
||||
* bootstrap: Sync with funclib.sh.
|
||||
|
||||
(cherry picked from commit 32f0df9835ac15ac17e04be57c368172c3ad1d19)
|
||||
(skipping NEWS change)
|
||||
Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
|
||||
--- a/bootstrap
|
||||
+++ b/bootstrap
|
||||
@@ -230,7 +230,7 @@ vc_ignore=
|
||||
|
||||
# Source required external libraries:
|
||||
# Set a version string for this script.
|
||||
-scriptversion=2015-01-20.17; # UTC
|
||||
+scriptversion=2015-10-04.22; # UTC
|
||||
|
||||
# General shell script boiler plate, and helper functions.
|
||||
# Written by Gary V. Vaughan, 2004
|
||||
@@ -1257,6 +1257,57 @@ func_relative_path ()
|
||||
}
|
||||
|
||||
|
||||
+# func_quote ARG
|
||||
+# --------------
|
||||
+# Aesthetically quote one ARG, store the result into $func_quote_result. Note
|
||||
+# that we keep attention to performance here (so far O(N) complexity as long as
|
||||
+# func_append is O(1)).
|
||||
+func_quote ()
|
||||
+{
|
||||
+ $debug_cmd
|
||||
+
|
||||
+ func_quote_result=$1
|
||||
+
|
||||
+ case $func_quote_result in
|
||||
+ *[\\\`\"\$]*)
|
||||
+ case $func_quote_result in
|
||||
+ *'*'*|*'['*)
|
||||
+ func_quote_result=`$ECHO "$func_quote_result" | $SED "$sed_quote_subst"`
|
||||
+ return 0
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
+ func_quote_old_IFS=$IFS
|
||||
+ for _G_char in '\' '`' '"' '$'
|
||||
+ do
|
||||
+ # STATE($1) PREV($2) SEPARATOR($3)
|
||||
+ set start "" ""
|
||||
+ func_quote_result=dummy"$_G_char$func_quote_result$_G_char"dummy
|
||||
+ IFS=$_G_char
|
||||
+ for _G_part in $func_quote_result
|
||||
+ do
|
||||
+ case $1 in
|
||||
+ quote)
|
||||
+ func_append func_quote_result "$3$2"
|
||||
+ set quote "$_G_part" "\\$_G_char"
|
||||
+ ;;
|
||||
+ start)
|
||||
+ set first "" ""
|
||||
+ func_quote_result=
|
||||
+ ;;
|
||||
+ first)
|
||||
+ set quote "$_G_part" ""
|
||||
+ ;;
|
||||
+ esac
|
||||
+ done
|
||||
+ IFS=$func_quote_old_IFS
|
||||
+ done
|
||||
+ ;;
|
||||
+ *) ;;
|
||||
+ esac
|
||||
+}
|
||||
+
|
||||
+
|
||||
# func_quote_for_eval ARG...
|
||||
# --------------------------
|
||||
# Aesthetically quote ARGs to be evaled later.
|
||||
@@ -1273,12 +1324,8 @@ func_quote_for_eval ()
|
||||
func_quote_for_eval_unquoted_result=
|
||||
func_quote_for_eval_result=
|
||||
while test 0 -lt $#; do
|
||||
- case $1 in
|
||||
- *[\\\`\"\$]*)
|
||||
- _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
|
||||
- *)
|
||||
- _G_unquoted_arg=$1 ;;
|
||||
- esac
|
||||
+ func_quote "$1"
|
||||
+ _G_unquoted_arg=$func_quote_result
|
||||
if test -n "$func_quote_for_eval_unquoted_result"; then
|
||||
func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
|
||||
else
|
||||
--- a/build-aux/ltmain.in
|
||||
+++ b/build-aux/ltmain.in
|
||||
@@ -3356,7 +3356,8 @@ else
|
||||
if test \"\$libtool_execute_magic\" != \"$magic\"; then
|
||||
file=\"\$0\""
|
||||
|
||||
- qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
|
||||
+ func_quote "$ECHO"
|
||||
+ qECHO=$func_quote_result
|
||||
$ECHO "\
|
||||
|
||||
# A function that is used when there is no print builtin or printf.
|
||||
@@ -8618,8 +8619,8 @@ EOF
|
||||
relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
|
||||
fi
|
||||
done
|
||||
- relink_command="(cd `pwd`; $relink_command)"
|
||||
- relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
|
||||
+ func_quote "(cd `pwd`; $relink_command)"
|
||||
+ relink_command=$func_quote_result
|
||||
fi
|
||||
|
||||
# Only actually do things if not in dry run mode.
|
||||
@@ -8865,7 +8866,8 @@ EOF
|
||||
done
|
||||
# Quote the link command for shipping.
|
||||
relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
|
||||
- relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
|
||||
+ func_quote "$relink_command"
|
||||
+ relink_command=$func_quote_result
|
||||
if test yes = "$hardcode_automatic"; then
|
||||
relink_command=
|
||||
fi
|
||||
--- a/build-aux/funclib.sh
|
||||
+++ b/build-aux/funclib.sh
|
||||
@@ -1,5 +1,5 @@
|
||||
# Set a version string for this script.
|
||||
-scriptversion=2015-01-20.17; # UTC
|
||||
+scriptversion=2015-10-04.22; # UTC
|
||||
|
||||
# General shell script boiler plate, and helper functions.
|
||||
# Written by Gary V. Vaughan, 2004
|
||||
@@ -1026,6 +1026,57 @@ func_relative_path ()
|
||||
}
|
||||
|
||||
|
||||
+# func_quote ARG
|
||||
+# --------------
|
||||
+# Aesthetically quote one ARG, store the result into $func_quote_result. Note
|
||||
+# that we keep attention to performance here (so far O(N) complexity as long as
|
||||
+# func_append is O(1)).
|
||||
+func_quote ()
|
||||
+{
|
||||
+ $debug_cmd
|
||||
+
|
||||
+ func_quote_result=$1
|
||||
+
|
||||
+ case $func_quote_result in
|
||||
+ *[\\\`\"\$]*)
|
||||
+ case $func_quote_result in
|
||||
+ *[\[\*\?]*)
|
||||
+ func_quote_result=`$ECHO "$func_quote_result" | $SED "$sed_quote_subst"`
|
||||
+ return 0
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
+ func_quote_old_IFS=$IFS
|
||||
+ for _G_char in '\' '`' '"' '$'
|
||||
+ do
|
||||
+ # STATE($1) PREV($2) SEPARATOR($3)
|
||||
+ set start "" ""
|
||||
+ func_quote_result=dummy"$_G_char$func_quote_result$_G_char"dummy
|
||||
+ IFS=$_G_char
|
||||
+ for _G_part in $func_quote_result
|
||||
+ do
|
||||
+ case $1 in
|
||||
+ quote)
|
||||
+ func_append func_quote_result "$3$2"
|
||||
+ set quote "$_G_part" "\\$_G_char"
|
||||
+ ;;
|
||||
+ start)
|
||||
+ set first "" ""
|
||||
+ func_quote_result=
|
||||
+ ;;
|
||||
+ first)
|
||||
+ set quote "$_G_part" ""
|
||||
+ ;;
|
||||
+ esac
|
||||
+ done
|
||||
+ IFS=$func_quote_old_IFS
|
||||
+ done
|
||||
+ ;;
|
||||
+ *) ;;
|
||||
+ esac
|
||||
+}
|
||||
+
|
||||
+
|
||||
# func_quote_for_eval ARG...
|
||||
# --------------------------
|
||||
# Aesthetically quote ARGs to be evaled later.
|
||||
@@ -1042,12 +1093,8 @@ func_quote_for_eval ()
|
||||
func_quote_for_eval_unquoted_result=
|
||||
func_quote_for_eval_result=
|
||||
while test 0 -lt $#; do
|
||||
- case $1 in
|
||||
- *[\\\`\"\$]*)
|
||||
- _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
|
||||
- *)
|
||||
- _G_unquoted_arg=$1 ;;
|
||||
- esac
|
||||
+ func_quote "$1"
|
||||
+ _G_unquoted_arg=$func_quote_result
|
||||
if test -n "$func_quote_for_eval_unquoted_result"; then
|
||||
func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
|
||||
else
|
||||
@ -1,8 +1,3 @@
|
||||
From 1b45c3c0d6682be7f4876b620780ee246a5acbaa Mon Sep 17 00:00:00 2001
|
||||
From: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
Date: Tue, 20 Jul 2021 16:56:16 -0300
|
||||
Subject: openwrt: remove trailing slash in install destdir
|
||||
|
||||
A command like /bin/sh ../../i586-poky-linux-libtool --mode=install /usr/bin/install -c gck-roots-store-standalone.la '/media/data1/builds/poky1/tmp/work/core2-poky-linux/gnome-keyring-2.26.1-r1/image/usr/lib/gnome-keyring/standalone/' fails (e.g. gnome-keyring or pulseaudio)
|
||||
|
||||
This is because libdir has a trailing slash which breaks the comparision.
|
||||
@ -14,12 +9,28 @@ Merged a patch received from Gary Thomas <gary@mlbassoc.com>
|
||||
Date: 2010/07/12
|
||||
Nitin A Kamble <nitin.a.kamble@intel.com>
|
||||
|
||||
(adjusted to v2.4.6)
|
||||
Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
|
||||
--- a/build-aux/ltmain.in
|
||||
+++ b/build-aux/ltmain.in
|
||||
@@ -2363,8 +2363,15 @@ func_mode_install ()
|
||||
--- a/libltdl/config/ltmain.m4sh
|
||||
+++ b/libltdl/config/ltmain.m4sh
|
||||
@@ -2167,8 +2167,15 @@ func_mode_install ()
|
||||
func_append dir "$objdir"
|
||||
|
||||
if test -n "$relink_command"; then
|
||||
+ # Strip any trailing slash from the destination.
|
||||
+ func_stripname '' '/' "$libdir"
|
||||
+ destlibdir=$func_stripname_result
|
||||
+
|
||||
+ func_stripname '' '/' "$destdir"
|
||||
+ s_destdir=$func_stripname_result
|
||||
+
|
||||
# Determine the prefix the user has applied to our future dir.
|
||||
- inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
|
||||
+ inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"`
|
||||
|
||||
# Don't allow the user to place us outside of our expected
|
||||
# location b/c this prevents finding dependent libraries that
|
||||
--- a/libltdl/config/ltmain.sh
|
||||
+++ b/libltdl/config/ltmain.sh
|
||||
@@ -2954,8 +2954,15 @@ func_mode_install ()
|
||||
func_append dir "$objdir"
|
||||
|
||||
if test -n "$relink_command"; then
|
||||
12
tools/libtool/patches/160-passthrough-ssp.patch
Normal file
12
tools/libtool/patches/160-passthrough-ssp.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff -ur libtool-2.4.orig/libltdl/config/ltmain.m4sh libtool-2.4/libltdl/config/ltmain.m4sh
|
||||
--- libtool-2.4.orig/libltdl/config/ltmain.m4sh 2015-06-18 10:46:15.499996979 +0200
|
||||
+++ libtool-2.4/libltdl/config/ltmain.m4sh 2015-06-18 10:48:24.686882213 +0200
|
||||
@@ -5076,7 +5076,7 @@
|
||||
# -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
|
||||
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
|
||||
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
|
||||
- -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
|
||||
+ -O*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*)
|
||||
func_quote_for_eval "$arg"
|
||||
arg="$func_quote_for_eval_result"
|
||||
func_append compile_command " $arg"
|
||||
@ -1,24 +1,112 @@
|
||||
From 90707200efadc8e230635c7c204c9c272cbc8631 Mon Sep 17 00:00:00 2001
|
||||
From: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
Date: Tue, 20 Jul 2021 17:01:03 -0300
|
||||
Subject: openwrt: add openwrt branding
|
||||
|
||||
This prepends program name with "OpenWrt-".
|
||||
|
||||
This was originally commited to openwrt by Jo-Philipp Wich
|
||||
<jow@openwrt.org>.
|
||||
|
||||
(adjusted to v2.4.6)
|
||||
Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
|
||||
|
||||
--- a/build-aux/ltmain.in
|
||||
+++ b/build-aux/ltmain.in
|
||||
@@ -82,7 +82,7 @@ func_echo ()
|
||||
IFS=$nl
|
||||
for _G_line in $_G_message; do
|
||||
IFS=$func_echo_IFS
|
||||
- $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
|
||||
+ $ECHO "OpenWrt-$progname${opt_mode+: $opt_mode}: $_G_line"
|
||||
done
|
||||
IFS=$func_echo_IFS
|
||||
--- a/libltdl/config/general.m4sh
|
||||
+++ b/libltdl/config/general.m4sh
|
||||
@@ -359,7 +359,7 @@ opt_warning=:
|
||||
# name if it has been set yet.
|
||||
func_echo ()
|
||||
{
|
||||
- $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
|
||||
+ $ECHO "OpenWrt-$progname: ${opt_mode+$opt_mode: }$*"
|
||||
}
|
||||
|
||||
# func_verbose arg...
|
||||
@@ -385,14 +385,14 @@ func_echo_all ()
|
||||
# Echo program name prefixed message to standard error.
|
||||
func_error ()
|
||||
{
|
||||
- $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
|
||||
+ $ECHO "OpenWrt-$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
|
||||
}
|
||||
|
||||
# func_warning arg...
|
||||
# Echo program name prefixed warning message to standard error.
|
||||
func_warning ()
|
||||
{
|
||||
- $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
|
||||
+ $opt_warning && $ECHO "OpenWrt-$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
|
||||
|
||||
# bash bug again:
|
||||
:
|
||||
--- a/libltdl/config/ltmain.sh
|
||||
+++ b/libltdl/config/ltmain.sh
|
||||
@@ -439,7 +439,7 @@ opt_warning=:
|
||||
# name if it has been set yet.
|
||||
func_echo ()
|
||||
{
|
||||
- $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
|
||||
+ $ECHO "OpenWrt-$progname: ${opt_mode+$opt_mode: }$*"
|
||||
}
|
||||
|
||||
# func_verbose arg...
|
||||
@@ -465,14 +465,14 @@ func_echo_all ()
|
||||
# Echo program name prefixed message to standard error.
|
||||
func_error ()
|
||||
{
|
||||
- $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
|
||||
+ $ECHO "OpenWrt-$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
|
||||
}
|
||||
|
||||
# func_warning arg...
|
||||
# Echo program name prefixed warning message to standard error.
|
||||
func_warning ()
|
||||
{
|
||||
- $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
|
||||
+ $opt_warning && $ECHO "OpenWrt-$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
|
||||
|
||||
# bash bug again:
|
||||
:
|
||||
--- a/libtoolize.in
|
||||
+++ b/libtoolize.in
|
||||
@@ -648,7 +648,7 @@ opt_warning=:
|
||||
# name if it has been set yet.
|
||||
func_echo ()
|
||||
{
|
||||
- $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
|
||||
+ $ECHO "OpenWrt-$progname: ${opt_mode+$opt_mode: }$*"
|
||||
}
|
||||
|
||||
# func_verbose arg...
|
||||
@@ -674,14 +674,14 @@ func_echo_all ()
|
||||
# Echo program name prefixed message to standard error.
|
||||
func_error ()
|
||||
{
|
||||
- $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
|
||||
+ $ECHO "OpenWrt-$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
|
||||
}
|
||||
|
||||
# func_warning arg...
|
||||
# Echo program name prefixed warning message to standard error.
|
||||
func_warning ()
|
||||
{
|
||||
- $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
|
||||
+ $opt_warning && $ECHO "OpenWrt-$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
|
||||
|
||||
# bash bug again:
|
||||
:
|
||||
--- a/tests/defs.in
|
||||
+++ b/tests/defs.in
|
||||
@@ -596,7 +596,7 @@ opt_warning=:
|
||||
# name if it has been set yet.
|
||||
func_echo ()
|
||||
{
|
||||
- $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
|
||||
+ $ECHO "OpenWrt-$progname: ${opt_mode+$opt_mode: }$*"
|
||||
}
|
||||
|
||||
# func_verbose arg...
|
||||
@@ -622,14 +622,14 @@ func_echo_all ()
|
||||
# Echo program name prefixed message to standard error.
|
||||
func_error ()
|
||||
{
|
||||
- $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
|
||||
+ $ECHO "OpenWrt-$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
|
||||
}
|
||||
|
||||
# func_warning arg...
|
||||
# Echo program name prefixed warning message to standard error.
|
||||
func_warning ()
|
||||
{
|
||||
- $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
|
||||
+ $opt_warning && $ECHO "OpenWrt-$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
|
||||
|
||||
# bash bug again:
|
||||
:
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=meson
|
||||
PKG_VERSION:=0.59.1
|
||||
PKG_VERSION:=0.59.2
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://github.com/mesonbuild/meson/releases/download/$(PKG_VERSION)
|
||||
PKG_HASH:=db586a451650d46bbe10984a87b79d9bcdc1caebf38d8e189f8848f8d502356d
|
||||
PKG_HASH:=13dee549a7ba758b7e33ce7719f28d1d337a98d10d378a4779ccc996f5a2fc49
|
||||
|
||||
PKG_MAINTAINER:=Andre Heider <a.heider@gmail.com>
|
||||
PKG_LICENSE:=Apache-2.0
|
||||
@ -20,8 +20,11 @@ define Host/Compile
|
||||
endef
|
||||
|
||||
define Host/Install
|
||||
$(INSTALL_DIR) $(STAGING_DIR_HOST)/bin
|
||||
$(HOST_BUILD_DIR)/packaging/create_zipapp.py $(HOST_BUILD_DIR) --interpreter $(STAGING_DIR_HOST)/bin/$(PYTHON) --outfile $(STAGING_DIR_HOST)/bin/meson
|
||||
$(INSTALL_DIR) $(STAGING_DIR_HOST)/lib/meson
|
||||
$(CP) $(HOST_BUILD_DIR)/* $(STAGING_DIR_HOST)/lib/meson/
|
||||
$(INSTALL_CONF) files/openwrt-cross.txt.in $(STAGING_DIR_HOST)/lib/meson/
|
||||
$(INSTALL_CONF) files/openwrt-native.txt.in $(STAGING_DIR_HOST)/lib/meson/
|
||||
endef
|
||||
|
||||
define Host/Clean
|
||||
|
||||
Loading…
Reference in New Issue
Block a user