docstr: Update for one iteration, with objective function calculated
  internally. This function should not be called directly by users.
  
  Parameters
  ----------
  dtrain
      Training data.
  dlabel
      Training labels.
  iteration
      Number of current iteration.
  fobj
      Custom objective.
code: def update(self, dtrain, dlabel, iteration, fobj=None):
      """Update for one iteration, with objective function calculated
      internally. This function should not be called directly by users.
  
      Parameters
      ----------
      dtrain
          Training data.
      dlabel
          Training labels.
      iteration
          Number of current iteration.
      fobj
          Custom objective.
      """
      # ToDo: add support for custom objective
      pred = self.gbm.pred(dtrain)
      gpair = self.gbm.get_gradient(pred, dlabel)
      self.gbm.do_boost(dtrain, gpair, iteration)
  
file_path: ivy/ivy/functional/frontends/xgboost/core.py
imports: import ivy
  from ivy.func_wrapper import with_unsupported_dtypes
  from .gbm import GBLinear
label_desc: Use image node_id 2 for calling the Booster obj's underlying member method code with example usage: obj.update(dtrain, dlabel, iteration, fobj) without return types