Rebase to pre-7.9 snapshot 7.8.50.20150108.
- Fix jit-reader.h for multi-lib.
This commit is contained in:
parent
1445be5574
commit
2f7f533ae7
39 changed files with 2233 additions and 3918 deletions
|
|
@ -96,11 +96,11 @@ Content-Type: text/x-patch
|
|||
Content-Transfer-Encoding: 7bit
|
||||
Content-Disposition: attachment; filename=bitpos-wp.patch
|
||||
|
||||
Index: gdb-7.8/gdb/arm-linux-nat.c
|
||||
Index: gdb-7.8.50.20141228/gdb/arm-linux-nat.c
|
||||
===================================================================
|
||||
--- gdb-7.8.orig/gdb/arm-linux-nat.c 2014-08-01 23:27:30.183773676 +0200
|
||||
+++ gdb-7.8/gdb/arm-linux-nat.c 2014-08-01 23:27:30.241773754 +0200
|
||||
@@ -1296,7 +1296,7 @@ arm_linux_stopped_by_watchpoint (struct
|
||||
--- gdb-7.8.50.20141228.orig/gdb/arm-linux-nat.c 2015-01-05 22:10:30.170726774 +0100
|
||||
+++ gdb-7.8.50.20141228/gdb/arm-linux-nat.c 2015-01-05 22:10:35.571751324 +0100
|
||||
@@ -1295,7 +1295,7 @@ arm_linux_stopped_by_watchpoint (struct
|
||||
static int
|
||||
arm_linux_watchpoint_addr_within_range (struct target_ops *target,
|
||||
CORE_ADDR addr,
|
||||
|
|
@ -109,11 +109,11 @@ Index: gdb-7.8/gdb/arm-linux-nat.c
|
|||
{
|
||||
return start <= addr && start + length - 1 >= addr;
|
||||
}
|
||||
Index: gdb-7.8/gdb/ppc-linux-nat.c
|
||||
Index: gdb-7.8.50.20141228/gdb/ppc-linux-nat.c
|
||||
===================================================================
|
||||
--- gdb-7.8.orig/gdb/ppc-linux-nat.c 2014-08-01 23:27:30.202773701 +0200
|
||||
+++ gdb-7.8/gdb/ppc-linux-nat.c 2014-08-01 23:29:38.311944925 +0200
|
||||
@@ -1862,11 +1862,11 @@ can_use_watchpoint_cond_accel (void)
|
||||
--- gdb-7.8.50.20141228.orig/gdb/ppc-linux-nat.c 2015-01-05 22:10:30.171726779 +0100
|
||||
+++ gdb-7.8.50.20141228/gdb/ppc-linux-nat.c 2015-01-05 22:10:35.572751329 +0100
|
||||
@@ -1860,11 +1860,11 @@ can_use_watchpoint_cond_accel (void)
|
||||
CONDITION_VALUE will hold the value which should be put in the
|
||||
DVC register. */
|
||||
static void
|
||||
|
|
@ -128,7 +128,7 @@ Index: gdb-7.8/gdb/ppc-linux-nat.c
|
|||
CORE_ADDR addr_end_data, addr_end_dvc;
|
||||
|
||||
/* The DVC register compares bytes within fixed-length windows which
|
||||
@@ -1953,7 +1953,7 @@ num_memory_accesses (struct value *v)
|
||||
@@ -1951,7 +1951,7 @@ num_memory_accesses (struct value *v)
|
||||
of the constant. */
|
||||
static int
|
||||
check_condition (CORE_ADDR watch_addr, struct expression *cond,
|
||||
|
|
@ -137,7 +137,7 @@ Index: gdb-7.8/gdb/ppc-linux-nat.c
|
|||
{
|
||||
int pc = 1, num_accesses_left, num_accesses_right;
|
||||
struct value *left_val, *right_val, *left_chain, *right_chain;
|
||||
@@ -2021,7 +2021,7 @@ check_condition (CORE_ADDR watch_addr, s
|
||||
@@ -2019,7 +2019,7 @@ check_condition (CORE_ADDR watch_addr, s
|
||||
true. */
|
||||
static int
|
||||
ppc_linux_can_accel_watchpoint_condition (struct target_ops *self,
|
||||
|
|
@ -146,7 +146,7 @@ Index: gdb-7.8/gdb/ppc-linux-nat.c
|
|||
struct expression *cond)
|
||||
{
|
||||
CORE_ADDR data_value;
|
||||
@@ -2038,7 +2038,7 @@ ppc_linux_can_accel_watchpoint_condition
|
||||
@@ -2036,7 +2036,7 @@ ppc_linux_can_accel_watchpoint_condition
|
||||
|
||||
static void
|
||||
create_watchpoint_request (struct ppc_hw_breakpoint *p, CORE_ADDR addr,
|
||||
|
|
@ -155,7 +155,7 @@ Index: gdb-7.8/gdb/ppc-linux-nat.c
|
|||
int insert)
|
||||
{
|
||||
if (len == 1
|
||||
@@ -2304,7 +2304,7 @@ ppc_linux_stopped_by_watchpoint (struct
|
||||
@@ -2302,7 +2302,7 @@ ppc_linux_stopped_by_watchpoint (struct
|
||||
static int
|
||||
ppc_linux_watchpoint_addr_within_range (struct target_ops *target,
|
||||
CORE_ADDR addr,
|
||||
|
|
@ -164,11 +164,11 @@ Index: gdb-7.8/gdb/ppc-linux-nat.c
|
|||
{
|
||||
int mask;
|
||||
|
||||
Index: gdb-7.8/gdb/procfs.c
|
||||
Index: gdb-7.8.50.20141228/gdb/procfs.c
|
||||
===================================================================
|
||||
--- gdb-7.8.orig/gdb/procfs.c 2014-08-01 23:27:30.203773703 +0200
|
||||
+++ gdb-7.8/gdb/procfs.c 2014-08-01 23:27:30.243773756 +0200
|
||||
@@ -2429,7 +2429,7 @@ procfs_address_to_host_pointer (CORE_ADD
|
||||
--- gdb-7.8.50.20141228.orig/gdb/procfs.c 2015-01-05 22:10:30.172726783 +0100
|
||||
+++ gdb-7.8.50.20141228/gdb/procfs.c 2015-01-05 22:10:35.573751333 +0100
|
||||
@@ -2426,7 +2426,7 @@ procfs_address_to_host_pointer (CORE_ADD
|
||||
#endif
|
||||
|
||||
static int
|
||||
|
|
@ -177,7 +177,7 @@ Index: gdb-7.8/gdb/procfs.c
|
|||
{
|
||||
#if !defined (PCWATCH) && !defined (PIOCSWATCH)
|
||||
/* If neither or these is defined, we can't support watchpoints.
|
||||
@@ -4762,7 +4762,7 @@ procfs_pid_to_str (struct target_ops *op
|
||||
@@ -4705,7 +4705,7 @@ procfs_pid_to_str (struct target_ops *op
|
||||
/* Insert a watchpoint. */
|
||||
|
||||
static int
|
||||
|
|
@ -186,11 +186,11 @@ Index: gdb-7.8/gdb/procfs.c
|
|||
int after)
|
||||
{
|
||||
#ifndef AIX5
|
||||
Index: gdb-7.8/gdb/remote.c
|
||||
Index: gdb-7.8.50.20141228/gdb/remote.c
|
||||
===================================================================
|
||||
--- gdb-7.8.orig/gdb/remote.c 2014-08-01 23:27:30.205773705 +0200
|
||||
+++ gdb-7.8/gdb/remote.c 2014-08-01 23:27:30.246773760 +0200
|
||||
@@ -8206,7 +8206,7 @@ remote_insert_watchpoint (struct target_
|
||||
--- gdb-7.8.50.20141228.orig/gdb/remote.c 2015-01-05 22:10:30.174726792 +0100
|
||||
+++ gdb-7.8.50.20141228/gdb/remote.c 2015-01-05 22:10:35.574751338 +0100
|
||||
@@ -8298,7 +8298,7 @@ remote_insert_watchpoint (struct target_
|
||||
p = strchr (rs->buf, '\0');
|
||||
addr = remote_address_masked (addr);
|
||||
p += hexnumstr (p, (ULONGEST) addr);
|
||||
|
|
@ -199,7 +199,7 @@ Index: gdb-7.8/gdb/remote.c
|
|||
|
||||
putpkt (rs->buf);
|
||||
getpkt (&rs->buf, &rs->buf_size, 0);
|
||||
@@ -8226,7 +8226,7 @@ remote_insert_watchpoint (struct target_
|
||||
@@ -8318,7 +8318,7 @@ remote_insert_watchpoint (struct target_
|
||||
|
||||
static int
|
||||
remote_watchpoint_addr_within_range (struct target_ops *target, CORE_ADDR addr,
|
||||
|
|
@ -208,7 +208,7 @@ Index: gdb-7.8/gdb/remote.c
|
|||
{
|
||||
CORE_ADDR diff = remote_address_masked (addr - start);
|
||||
|
||||
@@ -8256,7 +8256,7 @@ remote_remove_watchpoint (struct target_
|
||||
@@ -8348,7 +8348,7 @@ remote_remove_watchpoint (struct target_
|
||||
p = strchr (rs->buf, '\0');
|
||||
addr = remote_address_masked (addr);
|
||||
p += hexnumstr (p, (ULONGEST) addr);
|
||||
|
|
@ -217,11 +217,11 @@ Index: gdb-7.8/gdb/remote.c
|
|||
putpkt (rs->buf);
|
||||
getpkt (&rs->buf, &rs->buf_size, 0);
|
||||
|
||||
Index: gdb-7.8/gdb/target.c
|
||||
Index: gdb-7.8.50.20141228/gdb/target.c
|
||||
===================================================================
|
||||
--- gdb-7.8.orig/gdb/target.c 2014-08-01 23:27:30.206773707 +0200
|
||||
+++ gdb-7.8/gdb/target.c 2014-08-01 23:29:38.314944857 +0200
|
||||
@@ -52,7 +52,7 @@ static void target_info (char *, int);
|
||||
--- gdb-7.8.50.20141228.orig/gdb/target.c 2015-01-05 22:10:30.175726797 +0100
|
||||
+++ gdb-7.8.50.20141228/gdb/target.c 2015-01-05 22:10:35.575751342 +0100
|
||||
@@ -51,7 +51,7 @@ static void generic_tls_error (void) ATT
|
||||
static void default_terminal_info (struct target_ops *, const char *, int);
|
||||
|
||||
static int default_watchpoint_addr_within_range (struct target_ops *,
|
||||
|
|
@ -230,23 +230,7 @@ Index: gdb-7.8/gdb/target.c
|
|||
|
||||
static int default_region_ok_for_hw_watchpoint (struct target_ops *,
|
||||
CORE_ADDR, LONGEST);
|
||||
@@ -150,13 +150,13 @@ static int debug_to_remove_watchpoint (s
|
||||
static int debug_to_stopped_data_address (struct target_ops *, CORE_ADDR *);
|
||||
|
||||
static int debug_to_watchpoint_addr_within_range (struct target_ops *,
|
||||
- CORE_ADDR, CORE_ADDR, int);
|
||||
+ CORE_ADDR, CORE_ADDR, LONGEST);
|
||||
|
||||
static int debug_to_region_ok_for_hw_watchpoint (struct target_ops *self,
|
||||
CORE_ADDR, LONGEST);
|
||||
|
||||
static int debug_to_can_accel_watchpoint_condition (struct target_ops *self,
|
||||
- CORE_ADDR, int, int,
|
||||
+ CORE_ADDR, LONGEST, int,
|
||||
struct expression *);
|
||||
|
||||
static void debug_to_terminal_init (struct target_ops *self);
|
||||
@@ -2960,7 +2960,7 @@ default_region_ok_for_hw_watchpoint (str
|
||||
@@ -2983,7 +2983,7 @@ default_region_ok_for_hw_watchpoint (str
|
||||
static int
|
||||
default_watchpoint_addr_within_range (struct target_ops *target,
|
||||
CORE_ADDR addr,
|
||||
|
|
@ -255,52 +239,11 @@ Index: gdb-7.8/gdb/target.c
|
|||
{
|
||||
return addr >= start && addr < start + length;
|
||||
}
|
||||
@@ -3681,7 +3681,7 @@ debug_to_region_ok_for_hw_watchpoint (st
|
||||
|
||||
static int
|
||||
debug_to_can_accel_watchpoint_condition (struct target_ops *self,
|
||||
- CORE_ADDR addr, int len, int rw,
|
||||
+ CORE_ADDR addr, LONGEST len, int rw,
|
||||
struct expression *cond)
|
||||
{
|
||||
int retval;
|
||||
@@ -3692,8 +3692,8 @@ debug_to_can_accel_watchpoint_condition
|
||||
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"target_can_accel_watchpoint_condition "
|
||||
- "(%s, %d, %d, %s) = %ld\n",
|
||||
- core_addr_to_string (addr), len, rw,
|
||||
+ "(%s, %s, %d, %s) = %ld\n",
|
||||
+ core_addr_to_string (addr), plongest (len), rw,
|
||||
host_address_to_string (cond), (unsigned long) retval);
|
||||
return retval;
|
||||
}
|
||||
@@ -3728,7 +3728,7 @@ debug_to_stopped_data_address (struct ta
|
||||
static int
|
||||
debug_to_watchpoint_addr_within_range (struct target_ops *target,
|
||||
CORE_ADDR addr,
|
||||
- CORE_ADDR start, int length)
|
||||
+ CORE_ADDR start, LONGEST length)
|
||||
{
|
||||
int retval;
|
||||
|
||||
@@ -3736,9 +3736,9 @@ debug_to_watchpoint_addr_within_range (s
|
||||
start, length);
|
||||
|
||||
fprintf_filtered (gdb_stdlog,
|
||||
- "target_watchpoint_addr_within_range (%s, %s, %d) = %d\n",
|
||||
+ "target_watchpoint_addr_within_range (%s, %s, %s) = %d\n",
|
||||
core_addr_to_string (addr), core_addr_to_string (start),
|
||||
- length, retval);
|
||||
+ plongest (length), retval);
|
||||
return retval;
|
||||
}
|
||||
|
||||
Index: gdb-7.8/gdb/target.h
|
||||
Index: gdb-7.8.50.20141228/gdb/target.h
|
||||
===================================================================
|
||||
--- gdb-7.8.orig/gdb/target.h 2014-08-01 23:27:30.207773708 +0200
|
||||
+++ gdb-7.8/gdb/target.h 2014-08-01 23:29:38.315944839 +0200
|
||||
@@ -469,7 +469,7 @@ struct target_ops
|
||||
--- gdb-7.8.50.20141228.orig/gdb/target.h 2015-01-05 22:10:30.176726802 +0100
|
||||
+++ gdb-7.8.50.20141228/gdb/target.h 2015-01-05 22:10:35.575751342 +0100
|
||||
@@ -483,7 +483,7 @@ struct target_ops
|
||||
int (*to_stopped_data_address) (struct target_ops *, CORE_ADDR *)
|
||||
TARGET_DEFAULT_RETURN (0);
|
||||
int (*to_watchpoint_addr_within_range) (struct target_ops *,
|
||||
|
|
@ -309,7 +252,7 @@ Index: gdb-7.8/gdb/target.h
|
|||
TARGET_DEFAULT_FUNC (default_watchpoint_addr_within_range);
|
||||
|
||||
/* Documentation of this routine is provided with the corresponding
|
||||
@@ -479,7 +479,7 @@ struct target_ops
|
||||
@@ -493,7 +493,7 @@ struct target_ops
|
||||
TARGET_DEFAULT_FUNC (default_region_ok_for_hw_watchpoint);
|
||||
|
||||
int (*to_can_accel_watchpoint_condition) (struct target_ops *,
|
||||
|
|
@ -318,11 +261,11 @@ Index: gdb-7.8/gdb/target.h
|
|||
struct expression *)
|
||||
TARGET_DEFAULT_RETURN (0);
|
||||
int (*to_masked_watch_num_registers) (struct target_ops *,
|
||||
Index: gdb-7.8/gdb/aarch64-linux-nat.c
|
||||
Index: gdb-7.8.50.20141228/gdb/aarch64-linux-nat.c
|
||||
===================================================================
|
||||
--- gdb-7.8.orig/gdb/aarch64-linux-nat.c 2014-08-01 23:27:30.212773715 +0200
|
||||
+++ gdb-7.8/gdb/aarch64-linux-nat.c 2014-08-01 23:27:30.248773763 +0200
|
||||
@@ -428,14 +428,14 @@ aarch64_notify_debug_reg_change (const s
|
||||
--- gdb-7.8.50.20141228.orig/gdb/aarch64-linux-nat.c 2015-01-05 22:10:30.176726802 +0100
|
||||
+++ gdb-7.8.50.20141228/gdb/aarch64-linux-nat.c 2015-01-05 22:10:35.575751342 +0100
|
||||
@@ -424,14 +424,14 @@ aarch64_notify_debug_reg_change (const s
|
||||
static void
|
||||
aarch64_show_debug_reg_state (struct aarch64_debug_reg_state *state,
|
||||
const char *func, CORE_ADDR addr,
|
||||
|
|
@ -340,7 +283,7 @@ Index: gdb-7.8/gdb/aarch64-linux-nat.c
|
|||
type == hw_write ? "hw-write-watchpoint"
|
||||
: (type == hw_read ? "hw-read-watchpoint"
|
||||
: (type == hw_access ? "hw-access-watchpoint"
|
||||
@@ -869,9 +869,10 @@ aarch64_linux_read_description (struct t
|
||||
@@ -851,9 +851,10 @@ aarch64_linux_read_description (struct t
|
||||
gdbserver/linux-aarch64-low.c for more information. */
|
||||
|
||||
static void
|
||||
|
|
@ -353,7 +296,7 @@ Index: gdb-7.8/gdb/aarch64-linux-nat.c
|
|||
{
|
||||
int aligned_len;
|
||||
unsigned int offset;
|
||||
@@ -1038,7 +1039,7 @@ aarch64_point_encode_ctrl_reg (int type,
|
||||
@@ -1020,7 +1021,7 @@ aarch64_point_encode_ctrl_reg (int type,
|
||||
Return 0 for any non-compliant ADDR and/or LEN; return 1 otherwise. */
|
||||
|
||||
static int
|
||||
|
|
@ -362,7 +305,7 @@ Index: gdb-7.8/gdb/aarch64-linux-nat.c
|
|||
{
|
||||
unsigned int alignment = is_watchpoint ? AARCH64_HWP_ALIGNMENT
|
||||
: AARCH64_HBP_ALIGNMENT;
|
||||
@@ -1290,7 +1291,7 @@ aarch64_handle_aligned_watchpoint (int t
|
||||
@@ -1272,7 +1273,7 @@ aarch64_handle_aligned_watchpoint (int t
|
||||
Return 0 if succeed. */
|
||||
|
||||
static int
|
||||
|
|
@ -371,7 +314,7 @@ Index: gdb-7.8/gdb/aarch64-linux-nat.c
|
|||
int is_insert)
|
||||
{
|
||||
struct aarch64_debug_reg_state *state
|
||||
@@ -1315,8 +1316,8 @@ aarch64_handle_unaligned_watchpoint (int
|
||||
@@ -1297,8 +1298,8 @@ aarch64_handle_unaligned_watchpoint (int
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"handle_unaligned_watchpoint: is_insert: %d\n"
|
||||
" aligned_addr: 0x%08lx, aligned_len: %d\n"
|
||||
|
|
@ -382,7 +325,7 @@ Index: gdb-7.8/gdb/aarch64-linux-nat.c
|
|||
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
@@ -1328,7 +1329,7 @@ aarch64_handle_unaligned_watchpoint (int
|
||||
@@ -1310,7 +1311,7 @@ aarch64_handle_unaligned_watchpoint (int
|
||||
/* Implements insertion and removal of a single watchpoint. */
|
||||
|
||||
static int
|
||||
|
|
@ -391,7 +334,7 @@ Index: gdb-7.8/gdb/aarch64-linux-nat.c
|
|||
{
|
||||
if (aarch64_point_is_aligned (1 /* is_watchpoint */ , addr, len))
|
||||
return aarch64_handle_aligned_watchpoint (type, addr, len, is_insert);
|
||||
@@ -1497,7 +1498,7 @@ aarch64_linux_stopped_by_watchpoint (str
|
||||
@@ -1479,7 +1480,7 @@ aarch64_linux_stopped_by_watchpoint (str
|
||||
static int
|
||||
aarch64_linux_watchpoint_addr_within_range (struct target_ops *target,
|
||||
CORE_ADDR addr,
|
||||
|
|
@ -400,11 +343,11 @@ Index: gdb-7.8/gdb/aarch64-linux-nat.c
|
|||
{
|
||||
return start <= addr && start + length - 1 >= addr;
|
||||
}
|
||||
Index: gdb-7.8/gdb/target-delegates.c
|
||||
Index: gdb-7.8.50.20141228/gdb/target-delegates.c
|
||||
===================================================================
|
||||
--- gdb-7.8.orig/gdb/target-delegates.c 2014-08-01 23:27:30.212773715 +0200
|
||||
+++ gdb-7.8/gdb/target-delegates.c 2014-08-01 23:29:38.313944877 +0200
|
||||
@@ -261,7 +261,7 @@ tdefault_stopped_data_address (struct ta
|
||||
--- gdb-7.8.50.20141228.orig/gdb/target-delegates.c 2015-01-05 22:10:30.177726806 +0100
|
||||
+++ gdb-7.8.50.20141228/gdb/target-delegates.c 2015-01-05 22:12:11.071185408 +0100
|
||||
@@ -607,14 +607,14 @@ debug_stopped_data_address (struct targe
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
@ -413,7 +356,24 @@ Index: gdb-7.8/gdb/target-delegates.c
|
|||
{
|
||||
self = self->beneath;
|
||||
return self->to_watchpoint_addr_within_range (self, arg1, arg2, arg3);
|
||||
@@ -275,14 +275,14 @@ delegate_region_ok_for_hw_watchpoint (st
|
||||
}
|
||||
|
||||
static int
|
||||
-debug_watchpoint_addr_within_range (struct target_ops *self, CORE_ADDR arg1, CORE_ADDR arg2, int arg3)
|
||||
+debug_watchpoint_addr_within_range (struct target_ops *self, CORE_ADDR arg1, CORE_ADDR arg2, LONGEST arg3)
|
||||
{
|
||||
int result;
|
||||
fprintf_unfiltered (gdb_stdlog, "-> %s->to_watchpoint_addr_within_range (...)\n", debug_target.to_shortname);
|
||||
@@ -626,7 +626,7 @@ debug_watchpoint_addr_within_range (stru
|
||||
fputs_unfiltered (", ", gdb_stdlog);
|
||||
target_debug_print_CORE_ADDR (arg2);
|
||||
fputs_unfiltered (", ", gdb_stdlog);
|
||||
- target_debug_print_int (arg3);
|
||||
+ target_debug_print_LONGEST (arg3);
|
||||
fputs_unfiltered (") = ", gdb_stdlog);
|
||||
target_debug_print_int (result);
|
||||
fputs_unfiltered ("\n", gdb_stdlog);
|
||||
@@ -659,20 +659,20 @@ debug_region_ok_for_hw_watchpoint (struc
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
@ -430,3 +390,19 @@ Index: gdb-7.8/gdb/target-delegates.c
|
|||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
-debug_can_accel_watchpoint_condition (struct target_ops *self, CORE_ADDR arg1, int arg2, int arg3, struct expression *arg4)
|
||||
+debug_can_accel_watchpoint_condition (struct target_ops *self, CORE_ADDR arg1, LONGEST arg2, int arg3, struct expression *arg4)
|
||||
{
|
||||
int result;
|
||||
fprintf_unfiltered (gdb_stdlog, "-> %s->to_can_accel_watchpoint_condition (...)\n", debug_target.to_shortname);
|
||||
@@ -682,7 +682,7 @@ debug_can_accel_watchpoint_condition (st
|
||||
fputs_unfiltered (", ", gdb_stdlog);
|
||||
target_debug_print_CORE_ADDR (arg1);
|
||||
fputs_unfiltered (", ", gdb_stdlog);
|
||||
- target_debug_print_int (arg2);
|
||||
+ target_debug_print_LONGEST (arg2);
|
||||
fputs_unfiltered (", ", gdb_stdlog);
|
||||
target_debug_print_int (arg3);
|
||||
fputs_unfiltered (", ", gdb_stdlog);
|
||||
|
|
|
|||
Loading…
Reference in a new issue